Revert "[SemaCXX] Unconfuse Clang when std::align_val_t is unscoped in C++03"
authorEric Fiselier <eric@efcs.ca>
Wed, 24 Oct 2018 23:47:04 +0000 (23:47 +0000)
committerEric Fiselier <eric@efcs.ca>
Wed, 24 Oct 2018 23:47:04 +0000 (23:47 +0000)
This reverts commit 6f47cdd51341344c0e32630e19e72c94cd25f34e.

llvm-svn: 345225

clang/lib/Sema/SemaExprCXX.cpp
clang/test/SemaCXX/cxx03-aligned-allocation-unscoped-enum.cpp [deleted file]

index 03ec206..1349b5a 100644 (file)
@@ -1515,9 +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 && ParamTy->isIntegerType();
+        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 (file)
index 8bafaec..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-// RUN: %clang_cc1 -std=c++03 %s -faligned-allocation \
-// RUN:   -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;
-}