On Mon, Nov 26, 2018 at 3:13 PM Zola Bridges via cfe-commits
<cfe-commits@lists.llvm.org> wrote:
>
> 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.

Next time you revert something, can you add an explanation as to why
it was reverted into the commit message? It helps when doing code
archaeology.

Thanks!

~Aaron

>
> 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
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to