[clang] 00756b1 - Revert "[Sema] Attempt to perform call-size-specific `__attribute__((alloc_align(param_idx)))` validation"

Roman Lebedev via cfe-commits cfe-commits at lists.llvm.org
Thu Jan 23 12:10:49 PST 2020


Author: Roman Lebedev
Date: 2020-01-23T23:10:34+03:00
New Revision: 00756b182398b92abe16559287467079087aa631

URL: https://github.com/llvm/llvm-project/commit/00756b182398b92abe16559287467079087aa631
DIFF: https://github.com/llvm/llvm-project/commit/00756b182398b92abe16559287467079087aa631.diff

LOG: Revert "[Sema] Attempt to perform call-size-specific `__attribute__((alloc_align(param_idx)))` validation"

Likely makes bots angry.

This reverts commit c2a9061ac5166e48fe85ea2b6dbce9457c964958.

Added: 
    

Modified: 
    clang/lib/Sema/SemaChecking.cpp
    clang/test/Sema/alloc-align-attr.c
    clang/test/SemaCXX/alloc-align-attr.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
index 186f2b5b990c..1539f3375c41 100644
--- a/clang/lib/Sema/SemaChecking.cpp
+++ b/clang/lib/Sema/SemaChecking.cpp
@@ -3653,25 +3653,6 @@ void Sema::checkCall(NamedDecl *FDecl, const FunctionProtoType *Proto,
     }
   }
 
-  if (FDecl && FDecl->hasAttr<AllocAlignAttr>()) {
-    auto *AA = FDecl->getAttr<AllocAlignAttr>();
-    const Expr *Arg = Args[AA->getParamIndex().getASTIndex()];
-    if (!Arg->isValueDependent()) {
-      llvm::APSInt I(64);
-      if (Arg->isIntegerConstantExpr(I, Context)) {
-        if (!I.isPowerOf2()) {
-          Diag(Arg->getExprLoc(), diag::err_alignment_not_power_of_two)
-              << Arg->getSourceRange();
-          return;
-        }
-
-        if (I > Sema::MaximumAlignment)
-          Diag(Arg->getExprLoc(), diag::warn_assume_aligned_too_great)
-              << Arg->getSourceRange() << Sema::MaximumAlignment;
-      }
-    }
-  }
-
   if (FD)
     diagnoseArgDependentDiagnoseIfAttrs(FD, ThisArg, Args, Loc);
 }

diff  --git a/clang/test/Sema/alloc-align-attr.c b/clang/test/Sema/alloc-align-attr.c
index aa0fbd2cee3d..ae514343aff4 100644
--- a/clang/test/Sema/alloc-align-attr.c
+++ b/clang/test/Sema/alloc-align-attr.c
@@ -17,15 +17,3 @@ void *test_no_fn_proto(int x, int y) __attribute__((alloc_align)); // expected-e
 void *test_no_fn_proto(int x, int y) __attribute__((alloc_align())); // expected-error {{'alloc_align' attribute takes one argument}}
 void *test_no_fn_proto(int x, int y) __attribute__((alloc_align(32, 45, 37))); // expected-error {{'alloc_align' attribute takes one argument}}
 
-void *passthrought(int a) {
-  return test_ptr_alloc_align(a);
-}
-void *align16() {
-  return test_ptr_alloc_align(16);
-}
-void *align15() {
-  return test_ptr_alloc_align(15); // expected-error {{requested alignment is not a power of 2}}
-}
-void *align536870912() {
-  return test_ptr_alloc_align(1073741824); // expected-warning {{requested alignment must be 536870912 bytes or smaller; maximum alignment assumed}}
-}

diff  --git a/clang/test/SemaCXX/alloc-align-attr.cpp b/clang/test/SemaCXX/alloc-align-attr.cpp
index f910cbcf2c90..74cfb7d7e486 100644
--- a/clang/test/SemaCXX/alloc-align-attr.cpp
+++ b/clang/test/SemaCXX/alloc-align-attr.cpp
@@ -23,19 +23,13 @@ void* dependent_param_func(T param) __attribute__((alloc_align(1)));// expected-
 template <int T>
 void* illegal_align_param(int p) __attribute__((alloc_align(T))); // expected-error {{'alloc_align' attribute requires parameter 1 to be an integer constant}}
 
-void dependent_impl(int align) {
+void dependent_impl() {
   dependent_ret<int> a; // expected-note {{in instantiation of template class 'dependent_ret<int>' requested here}}
   a.Foo(1);
   a.Foo2(1);
-  dependent_ret<int *> b;
-  b.Foo(1);
-  b.Foo2(1);
-  b.Foo(3);           // expected-error {{requested alignment is not a power of 2}}
-  b.Foo2(3);          // expected-error {{requested alignment is not a power of 2}}
-  b.Foo(1073741824);  // expected-warning {{requested alignment must be 536870912 bytes or smaller; maximum alignment assumed}}
-  b.Foo2(1073741824); // expected-warning {{requested alignment must be 536870912 bytes or smaller; maximum alignment assumed}}
-  b.Foo(align);
-  b.Foo2(align);
+  dependent_ret<int*> b; 
+  a.Foo(1);
+  a.Foo2(1);
 
   dependent_param_struct<int> c; 
   c.Foo(1);


        


More information about the cfe-commits mailing list