diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-05-16 01:24:12 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-05-16 01:24:12 +0000 |
commit | 51150ab1f13a9272d06e96f45ca2f10697b4b364 (patch) | |
tree | 1b397129500a8178930cf7fecfb591aa3ea7caef /clang/lib/CodeGen/CodeGenFunction.h | |
parent | b8829825f1c62a53c8f4b7d2e71658a549d77744 (diff) | |
download | bcm5719-llvm-51150ab1f13a9272d06e96f45ca2f10697b4b364.tar.gz bcm5719-llvm-51150ab1f13a9272d06e96f45ca2f10697b4b364.zip |
When initializing thread-safe statics, put the call to
__cxa_guard_abort along the exceptional edge into (in effect) a nested
"try" that rethrows after aborting. Fixes PR7144 and the remaining
Boost.ProgramOptions failures, along with the regressions that r103880
caused.
The crucial difference between this and r103880 is that we now follow
LLVM's little dance with the llvm.eh.exception and llvm.eh.selector
calls, then use _Unwind_Resume_or_Rethrow to rethrow.
llvm-svn: 103892
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.h')
-rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h index 151c13c8088..4f85878f0c0 100644 --- a/clang/lib/CodeGen/CodeGenFunction.h +++ b/clang/lib/CodeGen/CodeGenFunction.h @@ -929,6 +929,7 @@ public: void EmitObjCAtThrowStmt(const ObjCAtThrowStmt &S); void EmitObjCAtSynchronizedStmt(const ObjCAtSynchronizedStmt &S); + llvm::Constant *getUnwindResumeOrRethrowFn(); struct CXXTryStmtInfo { llvm::BasicBlock *SavedLandingPad; llvm::BasicBlock *HandlerBlock; |