[cfe-commits] patch: nounwind on __cxa_guard_*

Chris Lattner clattner at apple.com
Mon Feb 13 11:56:12 PST 2012

On Feb 11, 2012, at 11:32 PM, Nick Lewycky wrote:

> This patch would cause clang to mark the __cxa_guard_* functions 'nounwind'. I believe this is the correct reading of the Itanium ABI; the functions are completely specified, and each function which may throw an exception specifically says what exception it will throw and under what conditions. Most of the functions say nothing about throwing exceptions, so I assume that they aren't allowed to throw.
> I'm not an expert on this though, so please review.
> This would fix the intersting problem of invokes to __cxa_guard_* functions. Even though clang never generates an invoke to these, one still manages to show up in SingleSource/Benchmarks/Misc-C++-EH/Output/spirit.llvm.bc. How? When the inliner inlines an invoke, all calls inside the callee turn into invokes with their unwind-destination pointing at the inline-callsite's unwind-destination.

Looks obviously correct to me, please apply!


More information about the cfe-commits mailing list