[llvm-commits] [llvm-gcc-4.2] r80850 - in /llvm-gcc-4.2/tags/Apple/llvmgcc42-2306/gcc: except.c llvm-convert.cpp

Duncan Sands baldrick at free.fr
Thu Sep 3 11:22:00 PDT 2009


Hi Eric,

> So, the patch I currently have along with emitting unwind should get 
> approximately more correct behavior and be safe?

yes, if you emit "unwind" then there is no need for the horrible
catch-all hack.  There's also no need to output a cleanup unless
GCC says there's a cleanup, so you can simplify even further
(maybe you already did) [*].  I'm not sure how safe "unwind" is though.
The case when I expect things might go wrong (i.e. selectors
left too far from a landing pad for the current code to work
out which landing pads to associate it to) is when there is
a cleanup for which the cleanup code has several basic blocks in
it.

Ciao,

Duncan.
[*] Currently we output a catch-all (which you turned into a cleanup),
to force execution to always branch to the landing pad, even when GCC
would have let the exception continue to unwind.  Even the cleanup
shouldn't be needed anymore if you output "unwind".



More information about the llvm-commits mailing list