[LLVMdev] ARM and lowerinvoke

Jim Grosbach grosbach at apple.com
Thu Apr 23 13:16:42 PDT 2009

Hi Duncan,

On Apr 22, 2009, at 12:08 AM, Duncan Sands wrote:
>> 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.
> the lowerinvoke pass doesn't know anything about LLVM's exception
> handling intrinsics, eh.exception and eh.selector.  The code generator
> checks that these intrinsics only turn up in landing pads.  Since  
> lower
> invoke gets rid of landing pads but doesn't touch the intrinsics, you
> get this failure.

Ah, OK. That makes sense. I think I overestimated the scope of  
lowerinvoke's intention a bit. I was under the impression that the  
intrinsics were handled in conjuction with the pass and played nicely  
with one another. That's obviously expected to be handled separately.

> I think the first thing to do is to understand how sj/lj exceptions
> are implemented in gcc.  I don't understand this myself.  It looks
> like a lot of the dwarf and sj/lj code is unified.

Yep. Absolutely agree. GCC keeps a lot of the high level stuff  
together, thankfully. One of the things I'm hoping to get out of this  
process is a bit of documentation about how sjlj exceptions work, and  
how that ties in with the implementation. I'm making slow but good  
progress, overall.

Thanks for taking the time to explain where I'm getting confused. Very  


More information about the llvm-dev mailing list