diff options
author | Piotr Padlewski <prazek@google.com> | 2015-08-27 21:35:37 +0000 |
---|---|---|
committer | Piotr Padlewski <prazek@google.com> | 2015-08-27 21:35:37 +0000 |
commit | 525f746710c9b132b20b653d5d8bd130e9bd5e59 (patch) | |
tree | 69b1380002662a8ffe256f6f99e0ef23bc215524 /clang/lib/CodeGen/CGCall.cpp | |
parent | 5f9d310640209347c6e534a4ed97074d205e1766 (diff) | |
download | bcm5719-llvm-525f746710c9b132b20b653d5d8bd130e9bd5e59.tar.gz bcm5719-llvm-525f746710c9b132b20b653d5d8bd130e9bd5e59.zip |
Generating assumption loads of vptr after ctor call (fixed)
Generating call assume(icmp %vtable, %global_vtable) after constructor
call for devirtualization purposes.
For more info go to:
http://lists.llvm.org/pipermail/cfe-dev/2015-July/044227.html
Edit:
Fixed version because of PR24479.
http://reviews.llvm.org/D11859
llvm-svn: 246213
Diffstat (limited to 'clang/lib/CodeGen/CGCall.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGCall.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp index 4cb9ebae3af..67513e3ba4b 100644 --- a/clang/lib/CodeGen/CGCall.cpp +++ b/clang/lib/CodeGen/CGCall.cpp @@ -1412,7 +1412,8 @@ void CodeGenModule::ConstructAttributeList(const CGFunctionInfo &FI, if (const FunctionDecl *Fn = dyn_cast<FunctionDecl>(TargetDecl)) { const FunctionProtoType *FPT = Fn->getType()->getAs<FunctionProtoType>(); - if (FPT && FPT->isNothrow(getContext())) + if (FPT && !isUnresolvedExceptionSpec(FPT->getExceptionSpecType()) && + FPT->isNothrow(getContext())) FuncAttrs.addAttribute(llvm::Attribute::NoUnwind); // Don't use [[noreturn]] or _Noreturn for a call to a virtual function. // These attributes are not inherited by overloads. |