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



_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to