<div class="gmail_quote">On 13 February 2012 11:56, Chris Lattner <span dir="ltr"><<a href="mailto:clattner@apple.com">clattner@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="HOEnZb"><div class="h5"><br>
On Feb 11, 2012, at 11:32 PM, Nick Lewycky wrote:<br>
<br>
> 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.<br>


><br>
> I'm not an expert on this though, so please review.<br>
><br>
> 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.<br>


<br>
</div></div>Looks obviously correct to me, please apply!<br></blockquote><div><br></div>Thanks Chris! Applied in r150435.<br><div><br></div><div>Nick</div><div><br></div></div>