[LLVMdev] ARM and lowerinvoke

Jim Grosbach grosbach at apple.com
Tue Apr 21 13:53:32 PDT 2009


All,

I'm looking at the lowerinvoke pass as a starting point for getting  
SJLJ based exception handling working on ARM, but am having some  
troubles with it. When I run a simple testcase (attached) through llc  
and specify -enable-correct-eh-support, llc asserts on me. It appears  
there's been some bitrot somewhere. SelectDAGBuild and  
SelectionDAGISel cooperate to track landing pads with CatchInfoLost  
and CatchInfoFound and make sure they're all handled. However,  
lowerinvoke throws a wrench into that by getting rid of the explicit  
invokes, so SelectionDAGISel never identifies any landing pads, and  
then complains with:
Assertion failed: (FuncInfo->CatchInfoFound.size() == FuncInfo- 
 >CatchInfoLost.size() && "Not all catch info was assigned to a  
landing pad!"), function runOnFunction, file /Volumes/Home/grosbaj/ 
sources/llvm-public/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp,  
line 350.

Is it reasonable to expect that lowerinvoke is a good place to start  
for doing what I'm after? Assuming so, I could use a bit of background  
education on what's going on with this assertion and how to correct  
it. Where is a good place to look to get that?

Thanks
   Jim

-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.bc
Type: application/octet-stream
Size: 1840 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090421/e00e4b1f/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.cpp
Type: application/octet-stream
Size: 239 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090421/e00e4b1f/attachment-0001.obj>


More information about the llvm-dev mailing list