diff options
author | Eric Fiselier <eric@efcs.ca> | 2018-10-25 19:50:43 +0000 |
---|---|---|
committer | Eric Fiselier <eric@efcs.ca> | 2018-10-25 19:50:43 +0000 |
commit | e2c6f9622e58d1cf15204ef6cf26cc3a1c7d50c5 (patch) | |
tree | fbb95076d54ceedeec67c39aabe0859be907d7ae | |
parent | 00c4330b2df58e4fc2bbb86b34ea4e6ab88925a9 (diff) |
Revert "[SemaCXX] Unconfuse Clang when std::align_val_t is unscoped in C++03"
This reverts commit b5d8d0de744d2c212bdb17d5c5fd4447dd14dbd2.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@345306 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/SemaExprCXX.cpp | 7 | ||||
-rw-r--r-- | test/SemaCXX/cxx03-aligned-allocation-unscoped-enum.cpp | 21 |
2 files changed, 2 insertions, 26 deletions
diff --git a/lib/Sema/SemaExprCXX.cpp b/lib/Sema/SemaExprCXX.cpp index 43e753636d..1349b5af6a 100644 --- a/lib/Sema/SemaExprCXX.cpp +++ b/lib/Sema/SemaExprCXX.cpp @@ -1515,11 +1515,8 @@ namespace { if (FD->getNumParams() == NumBaseParams + 2) HasAlignValT = HasSizeT = true; else if (FD->getNumParams() == NumBaseParams + 1) { - QualType ParamTy = FD->getParamDecl(NumBaseParams)->getType(); - HasAlignValT = ParamTy->isAlignValT(); - HasSizeT = !HasAlignValT; - assert((HasAlignValT || ParamTy->isIntegerType()) && - "Candidate is not regular dealloc function"); + HasSizeT = FD->getParamDecl(NumBaseParams)->getType()->isIntegerType(); + HasAlignValT = !HasSizeT; } // In CUDA, determine how much we'd like / dislike to call this. diff --git a/test/SemaCXX/cxx03-aligned-allocation-unscoped-enum.cpp b/test/SemaCXX/cxx03-aligned-allocation-unscoped-enum.cpp deleted file mode 100644 index 8c8a6bb443..0000000000 --- a/test/SemaCXX/cxx03-aligned-allocation-unscoped-enum.cpp +++ /dev/null @@ -1,21 +0,0 @@ -// RUN: %clang_cc1 -std=c++03 -triple x86_64-pc-linux-gnu %s \ -// RUN: -faligned-allocation -emit-llvm -o - | FileCheck %s - -// Ensure Clang doesn't confuse std::align_val_t with the sized deallocation -// parameter when the enum type is unscoped. Libc++ does this in C++03 in order -// to support aligned allocation in that dialect. - -using size_t = __decltype(sizeof(0)); - -namespace std { -enum align_val_t { zero = size_t(0), - max = size_t(-1) }; -} - -// CHECK-LABEL: define void @_Z1fPi( -void f(int *p) { - // CHECK-NOT: call void @_ZdlPvSt11align_val_t( - // CHECK: call void @_ZdlPv( - // CHECK: ret void - delete p; -} |