question about SjLjEHPrepare

When testing with LLVM 3.0 I noticed a crash in LLC with a test case we are running. After examining the source, I found that the crash coming from SjLjEHPrepare.cpp, specifically from "ReplaceLandingPadVal". I can explain about the crash if needed, but I will omit that for now.

Testing with and LLC built from the top of trunk showed no LLC crash, and the code in SjLhEHPrepare.cpp has been very much changed. The comment in revision 142800 indicates that this is a cleanup, and not a change in functionality, or at least that is how I interpreted it.

We are not prepared to move the llvm 3.1 top of trunk, so I attempted to back port SjLjEHPrepare.cpp's new implementation to llvm 3.0, strictly for our own purposes, and not to submit to the LLVM code line. I found after some testing that the crash in LLC is fixed. However, with this build I am seeing some cases where exceptions are thrown and not properly caught.

My question is whether SjLjEHPrepare.cpp is a stand alone pass that I can hope to port alone into llvm 3.0, or whether there are other parts of the source code that would have to be back ported along with it to have exception handling working properly.

I know this is a somewhat unorthodox approach, so thanks for bearing with me in this matter.


Hi David,

The pass is pretty tightly coupled with the rest of LLVM's exception handling design and implementation by its nature. It's possible you'd be able to identify a set of patches to back port, but I suspect that will prove to be a pretty onerous task.