summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/threadsafe-statics-exceptions.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Implement ARM static local initialization guards, which are more compact thanJohn McCall2010-09-081-2/+2
| | | | | | Itanium guards and use a slightly different compiled-in API. llvm-svn: 113330
* When initializing a static local, pop the guard-abort EH cleanup afterJohn McCall2010-08-101-1/+1
| | | | | | the variable is fully initialized. llvm-svn: 110704
* Validated by nightly-test runs on x86 and x86-64 darwin, including afterJohn McCall2010-07-061-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | self-host. Hopefully these results hold up on different platforms. I tried to keep the GNU ObjC runtime happy, but it's hard for me to test. Reimplement how clang generates IR for exceptions. Instead of creating new invoke destinations which sequentially chain to the previous destination, push a more semantic representation of *why* we need the cleanup/catch/filter behavior, then collect that information into a single landing pad upon request. Also reorganizes how normal cleanups (i.e. cleanups triggered by non-exceptional control flow) are generated, since it's actually fairly closely tied in with the former. Remove the need to track which cleanup scope a block is associated with. Document a lot of previously poorly-understood (by me, at least) behavior. The new framework implements the Horrible Hack (tm), which requires every landing pad to have a catch-all so that inlining will work. Clang no longer requires the Horrible Hack just to make exceptions flow correctly within a function, however. The HH is an unfortunate requirement of LLVM's EH IR. llvm-svn: 107631
* When initializing thread-safe statics, put the call toDouglas Gregor2010-05-161-0/+26
| | | | | | | | | | | | | __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
* Revert r103880 (thread-safe static initialization w/ exceptions),Douglas Gregor2010-05-161-24/+0
| | | | | | because it's causing strange linker errors. Unfixes PR7144. llvm-svn: 103890
* When initializing thread-safe statics, put the call toDouglas Gregor2010-05-151-0/+24
__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. llvm-svn: 103880
OpenPOWER on IntegriCloud