summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2018-10-25 19:50:43 +0000
committerEric Fiselier <eric@efcs.ca>2018-10-25 19:50:43 +0000
commit3b4bbe7b0f15ddd57e614922ffdaaf6409a88378 (patch)
tree46ed1f1fb11b12e8ee2e1afc85ffc09369a27678
parent5aa945e7ac65c3409f4a31859779567afe6da9e4 (diff)
downloadbcm5719-llvm-3b4bbe7b0f15ddd57e614922ffdaaf6409a88378.tar.gz
bcm5719-llvm-3b4bbe7b0f15ddd57e614922ffdaaf6409a88378.zip
Revert "[SemaCXX] Unconfuse Clang when std::align_val_t is unscoped in C++03"
This reverts commit b5d8d0de744d2c212bdb17d5c5fd4447dd14dbd2. llvm-svn: 345306
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp7
-rw-r--r--clang/test/SemaCXX/cxx03-aligned-allocation-unscoped-enum.cpp21
2 files changed, 2 insertions, 26 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index 43e753636d1..1349b5af6aa 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/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/clang/test/SemaCXX/cxx03-aligned-allocation-unscoped-enum.cpp b/clang/test/SemaCXX/cxx03-aligned-allocation-unscoped-enum.cpp
deleted file mode 100644
index 8c8a6bb4437..00000000000
--- a/clang/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;
-}
OpenPOWER on IntegriCloud