From 3b4bbe7b0f15ddd57e614922ffdaaf6409a88378 Mon Sep 17 00:00:00 2001 From: Eric Fiselier Date: Thu, 25 Oct 2018 19:50:43 +0000 Subject: [PATCH] Revert "[SemaCXX] Unconfuse Clang when std::align_val_t is unscoped in C++03" This reverts commit b5d8d0de744d2c212bdb17d5c5fd4447dd14dbd2. llvm-svn: 345306 --- clang/lib/Sema/SemaExprCXX.cpp | 7 ++----- .../cxx03-aligned-allocation-unscoped-enum.cpp | 21 --------------------- 2 files changed, 2 insertions(+), 26 deletions(-) delete mode 100644 clang/test/SemaCXX/cxx03-aligned-allocation-unscoped-enum.cpp diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index 43e7536..1349b5af 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 8c8a6bb..0000000 --- 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; -} -- 2.7.4