[llvm-commits] CVS: llvm/Makefile.rules

Chris Lattner clattner at apple.com
Fri Aug 18 10:22:55 PDT 2006


>> We'd expect the exception to end up in main, an error printed, then
>> the process exited.  However, because "foo" has no unwind info, the
>> unwinder will abort the process when it gets to the X frame.
>
> I was under the impression that those stack frames would just get
> bypassed. However, I wrote a little test program to simulate the
> situation and got:
>
> terminate called after throwing an instance of 'std::string'
> Aborted

Yep, the problem is that unwind info is needed to restore callee  
saved registers, etc.  This is why the -fexceptions switch is needed  
with C code if you want to unwind across C frames.

> So, I'll back out the change until we get LLVM completely EH free in
> low-level libraries.

Ok, thanks.

>> I think the simplest thing to do is to eliminate throws from leaf
>> code like libsystem etc.  Tools like bugpoint can continue to use EH
>> for as long as we think is reasonable, but the libraries that are
>> called into by other code should be EH free.
>
> Yes, that's the entire point of PR797. I was just trying to be
> incremental about it.

Ok, thanks!

-Chris



More information about the llvm-commits mailing list