[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