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

Chris Lattner clattner at apple.com
Fri Aug 18 10:04:56 PDT 2006


On Aug 18, 2006, at 9:55 AM, Reid Spencer wrote:
> Hmm .. didn't think of that, but it passed all the tests. All the  
> tools
> still have top level exception handlers so its not like we'd  
> generate an
> unexpected_exception error. Some memory cleanup could be missed,  
> but the
> process is going to exit anyway. Temporary files that need to be  
> cleaned
> up are generally done in the tool's code, so that should be okay. What
> else could go wrong?

Consider:

"main" has a catch block, which prints an error message and exits.   
main calls foo.

"foo" is compiled without exception info, foo calls some llvm::sys  
function 'X' that can throw.

"X" throws an exception on some error.

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 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.

-Chris






More information about the llvm-commits mailing list