Author: zbrid Date: Mon Nov 26 12:11:18 2018 New Revision: 347588 URL: http://llvm.org/viewvc/llvm-project?rev=347588&view=rev Log: Revert "[clang][slh] add attribute for speculative load hardening"
This reverts commit 801eaf91221ba6dd6996b29ff82659ad6359e885. Removed: cfe/trunk/test/CodeGen/attr-speculative-load-hardening.cpp cfe/trunk/test/CodeGen/attr-speculative-load-hardening.m cfe/trunk/test/SemaCXX/attr-speculative-load-hardening.cpp Modified: cfe/trunk/include/clang/Basic/Attr.td cfe/trunk/include/clang/Basic/AttrDocs.td cfe/trunk/lib/CodeGen/CGCall.cpp cfe/trunk/lib/Sema/SemaDeclAttr.cpp Modified: cfe/trunk/include/clang/Basic/Attr.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=347588&r1=347587&r2=347588&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/Attr.td (original) +++ cfe/trunk/include/clang/Basic/Attr.td Mon Nov 26 12:11:18 2018 @@ -3091,9 +3091,3 @@ def AlwaysDestroy : InheritableAttr { let Subjects = SubjectList<[Var]>; let Documentation = [AlwaysDestroyDocs]; } - -def SpeculativeLoadHardening : InheritableAttr { - let Spellings = [Clang<"speculative_load_hardening">]; - let Subjects = SubjectList<[Function, ObjCMethod], ErrorDiag>; - let Documentation = [SpeculativeLoadHardeningDocs]; -} Modified: cfe/trunk/include/clang/Basic/AttrDocs.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/AttrDocs.td?rev=347588&r1=347587&r2=347588&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/AttrDocs.td (original) +++ cfe/trunk/include/clang/Basic/AttrDocs.td Mon Nov 26 12:11:18 2018 @@ -3629,27 +3629,3 @@ GNU inline semantics are the default beh ``-std=c89``, ``-std=c94``, or ``-fgnu89-inline``. }]; } - -def SpeculativeLoadHardeningDocs : Documentation { - let Category = DocCatFunction; - let Content = [{ - This attribute can be applied to a function declaration in order to indicate - that `Speculative Load Hardening <https://llvm.org/docs/SpeculativeLoadHardening.html>`_ - should be enabled for the function body. This can also be applied to a method - in Objective C. - - Speculative Load Hardening is a best-effort mitigation against - information leak attacks that make use of control flow - miss-speculation - specifically miss-speculation of whether a branch - is taken or not. Typically vulnerabilities enabling such attacks are - classified as "Spectre variant #1". Notably, this does not attempt to - mitigate against miss-speculation of branch target, classified as - "Spectre variant #2" vulnerabilities. - - When inlining, the attribute is sticky. Inlining a function that - carries this attribute will cause the caller to gain the - attribute. This is intended to provide a maximally conservative model - where the code in a function annotated with this attribute will always - (even after inlining) end up hardened. - }]; -} Modified: cfe/trunk/lib/CodeGen/CGCall.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCall.cpp?rev=347588&r1=347587&r2=347588&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CGCall.cpp (original) +++ cfe/trunk/lib/CodeGen/CGCall.cpp Mon Nov 26 12:11:18 2018 @@ -1791,8 +1791,6 @@ void CodeGenModule::ConstructDefaultFnAt if (CodeGenOpts.Backchain) FuncAttrs.addAttribute("backchain"); - // FIXME: The interaction of this attribute with the SLH command line flag - // has not been determined. if (CodeGenOpts.SpeculativeLoadHardening) FuncAttrs.addAttribute(llvm::Attribute::SpeculativeLoadHardening); } @@ -1856,8 +1854,6 @@ void CodeGenModule::ConstructAttributeLi FuncAttrs.addAttribute(llvm::Attribute::NoDuplicate); if (TargetDecl->hasAttr<ConvergentAttr>()) FuncAttrs.addAttribute(llvm::Attribute::Convergent); - if (TargetDecl->hasAttr<SpeculativeLoadHardeningAttr>()) - FuncAttrs.addAttribute(llvm::Attribute::SpeculativeLoadHardening); if (const FunctionDecl *Fn = dyn_cast<FunctionDecl>(TargetDecl)) { AddAttributesFromFunctionProtoType( Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=347588&r1=347587&r2=347588&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original) +++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Mon Nov 26 12:11:18 2018 @@ -6373,9 +6373,6 @@ static void ProcessDeclAttribute(Sema &S case ParsedAttr::AT_Section: handleSectionAttr(S, D, AL); break; - case ParsedAttr::AT_SpeculativeLoadHardening: - handleSimpleAttribute<SpeculativeLoadHardeningAttr>(S, D, AL); - break; case ParsedAttr::AT_CodeSeg: handleCodeSegAttr(S, D, AL); break; Removed: cfe/trunk/test/CodeGen/attr-speculative-load-hardening.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/attr-speculative-load-hardening.cpp?rev=347587&view=auto ============================================================================== --- cfe/trunk/test/CodeGen/attr-speculative-load-hardening.cpp (original) +++ cfe/trunk/test/CodeGen/attr-speculative-load-hardening.cpp (removed) @@ -1,18 +0,0 @@ -// RUN: %clang_cc1 -std=c++11 -disable-llvm-passes -emit-llvm %s -o - | FileCheck %s --check-prefix=CHECK1 -// RUN: %clang_cc1 -std=c++11 -disable-llvm-passes -emit-llvm %s -o - | FileCheck %s --check-prefix=CHECK2 -// -// Check that we set the attribute on each function. - -[[clang::speculative_load_hardening]] -int test1() { - return 42; -} - -int __attribute__((speculative_load_hardening)) test2() { - return 42; -} -// CHECK1: @{{.*}}test1{{.*}}[[SLH1:#[0-9]+]] -// CHECK1: attributes [[SLH1]] = { {{.*}}speculative_load_hardening{{.*}} } - -// CHECK2: @{{.*}}test2{{.*}}[[SLH2:#[0-9]+]] -// CHECK2: attributes [[SLH2]] = { {{.*}}speculative_load_hardening{{.*}} } Removed: cfe/trunk/test/CodeGen/attr-speculative-load-hardening.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/attr-speculative-load-hardening.m?rev=347587&view=auto ============================================================================== --- cfe/trunk/test/CodeGen/attr-speculative-load-hardening.m (original) +++ cfe/trunk/test/CodeGen/attr-speculative-load-hardening.m (removed) @@ -1,9 +0,0 @@ -// RUN: %clang -emit-llvm %s -o - -S | FileCheck %s -check-prefix=SLH - -int main() __attribute__((speculative_load_hardening)) { - return 0; -} - -// SLH: @{{.*}}main{{.*}}[[SLH:#[0-9]+]] - -// SLH: attributes [[SLH]] = { {{.*}}speculative_load_hardening{{.*}} } Removed: cfe/trunk/test/SemaCXX/attr-speculative-load-hardening.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/attr-speculative-load-hardening.cpp?rev=347587&view=auto ============================================================================== --- cfe/trunk/test/SemaCXX/attr-speculative-load-hardening.cpp (original) +++ cfe/trunk/test/SemaCXX/attr-speculative-load-hardening.cpp (removed) @@ -1,34 +0,0 @@ -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s - -int i __attribute__((speculative_load_hardening)); // expected-error {{'speculative_load_hardening' attribute only applies to functions}} - -void f1() __attribute__((speculative_load_hardening)); -void f2() __attribute__((speculative_load_hardening(1))); // expected-error {{'speculative_load_hardening' attribute takes no arguments}} - -template <typename T> -void tf1() __attribute__((speculative_load_hardening)); - -int f3(int __attribute__((speculative_load_hardening)), int); // expected-error {{'speculative_load_hardening' attribute only applies to functions}} - -struct A { - int f __attribute__((speculative_load_hardening)); // expected-error {{'speculative_load_hardening' attribute only applies to functions}} - void mf1() __attribute__((speculative_load_hardening)); - static void mf2() __attribute__((speculative_load_hardening)); -}; - -int ci [[speculative_load_hardening]]; // expected-error {{'speculative_load_hardening' attribute only applies to functions}} - -[[speculative_load_hardening]] void cf1(); -[[speculative_load_hardening(1)]] void cf2(); // expected-error {{'speculative_load_hardening' attribute takes no arguments}} - -template <typename T> -[[speculative_load_hardening]] -void ctf1(); - -int cf3(int c[[speculative_load_hardening]], int); // expected-error {{'speculative_load_hardening' attribute only applies to functions}} - -struct CA { - int f [[speculative_load_hardening]]; // expected-error {{'speculative_load_hardening' attribute only applies to functions}} - [[speculative_load_hardening]] void mf1(); - [[speculative_load_hardening]] static void mf2(); -}; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits