Author: zbrid Date: Mon Nov 26 10:13:31 2018 New Revision: 347582 URL: http://llvm.org/viewvc/llvm-project?rev=347582&view=rev Log: [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 Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp cfe/trunk/test/CodeGen/attr-speculative-load-hardening.c Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=347582&r1=347581&r2=347582&view=diff ============================================================================== --- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Mon Nov 26 10:13:31 2018 @@ -4452,8 +4452,9 @@ void Clang::ConstructJob(Compilation &C, 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); Modified: cfe/trunk/test/CodeGen/attr-speculative-load-hardening.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/attr-speculative-load-hardening.c?rev=347582&r1=347581&r2=347582&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/attr-speculative-load-hardening.c (original) +++ cfe/trunk/test/CodeGen/attr-speculative-load-hardening.c Mon Nov 26 10:13:31 2018 @@ -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{{.*}} } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits