diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index d43f17017ae5c2357e1ff9b2c5c6d757fadda862..08fd14cef400937b5cbecf372f9a96ac3e8e00a4 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -2076,18 +2076,16 @@ void Sema::DeclareGlobalAllocationFunction(DeclarationName Name, } } - QualType BadAllocType; + FunctionProtoType::ExtProtoInfo EPI; + bool HasBadAllocExceptionSpec = (Name.getCXXOverloadedOperator() == OO_New || Name.getCXXOverloadedOperator() == OO_Array_New); - if (HasBadAllocExceptionSpec && !getLangOpts().CPlusPlus11) { - assert(StdBadAlloc && "Must have std::bad_alloc declared"); - BadAllocType = Context.getTypeDeclType(getStdBadAlloc()); - } - - FunctionProtoType::ExtProtoInfo EPI; if (HasBadAllocExceptionSpec) { if (!getLangOpts().CPlusPlus11) { + assert(StdBadAlloc && "Must have std::bad_alloc declared"); + QualType BadAllocType = Context.getTypeDeclType(getStdBadAlloc()); + EPI.ExceptionSpecType = EST_Dynamic; EPI.NumExceptions = 1; EPI.Exceptions = &BadAllocType;