diff options
author | Zola Bridges <zbrid@google.com> | 2018-11-26 18:13:31 +0000 |
---|---|---|
committer | Zola Bridges <zbrid@google.com> | 2018-11-26 18:13:31 +0000 |
commit | c866679a9b22a88ad4849902dec68cb2af2e5d0c (patch) | |
tree | 132dea311c297246cee5fe9bee7063a0dabae89a | |
parent | e381120477eeb22eb1aecf3ba024ecf7d191cf4e (diff) | |
download | bcm5719-llvm-c866679a9b22a88ad4849902dec68cb2af2e5d0c.tar.gz bcm5719-llvm-c866679a9b22a88ad4849902dec68cb2af2e5d0c.zip |
[clang][slh] Forward mSLH only to Clang CC1
Summary:
-mno-speculative-load-hardening isn't a cc1 option, therefore,
before this change:
clang -mno-speculative-load-hardening hello.cpp
would have the following error:
error: unknown argument: '-mno-speculative-load-hardening'
This change will only ever forward -mspeculative-load-hardening
which is a CC1 option based on which flag was passed to clang.
Also added a test that uses this option that fails if an error like the
above is ever thrown.
Thank you ericwf for help debugging and fixing this error.
Reviewers: chandlerc, EricWF
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D54763
llvm-svn: 347582
-rw-r--r-- | clang/lib/Driver/ToolChains/Clang.cpp | 5 | ||||
-rw-r--r-- | clang/test/CodeGen/attr-speculative-load-hardening.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 9a36f7b429c..6b2083ce025 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -4452,8 +4452,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, Args.AddLastArg(CmdArgs, options::OPT_pthread); - Args.AddLastArg(CmdArgs, options::OPT_mspeculative_load_hardening, - options::OPT_mno_speculative_load_hardening); + if (Args.hasFlag(options::OPT_mspeculative_load_hardening, options::OPT_mno_speculative_load_hardening, + false)) + CmdArgs.push_back(Args.MakeArgString("-mspeculative-load-hardening")); RenderSSPOptions(TC, Args, CmdArgs, KernelOrKext); diff --git a/clang/test/CodeGen/attr-speculative-load-hardening.c b/clang/test/CodeGen/attr-speculative-load-hardening.c index ccbded44bb4..97bccd03585 100644 --- a/clang/test/CodeGen/attr-speculative-load-hardening.c +++ b/clang/test/CodeGen/attr-speculative-load-hardening.c @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -mspeculative-load-hardening -disable-llvm-passes -emit-llvm %s -o - | FileCheck %s -check-prefix=SLH +// RUN: %clang -mno-speculative-load-hardening -S -emit-llvm %s -o - | FileCheck %s -check-prefix=NOSLH // // Check that we set the attribute on each function. @@ -8,3 +9,7 @@ int test1() { // SLH: @{{.*}}test1{{.*}}[[SLH:#[0-9]+]] // SLH: attributes [[SLH]] = { {{.*}}speculative_load_hardening{{.*}} } + +// NOSLH: @{{.*}}test1{{.*}}[[NOSLH:#[0-9]+]] + +// NOSLH-NOT: attributes [[SLH]] = { {{.*}}speculative_load_hardening{{.*}} } |