[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
helpful.
Regards,
-Jim
More information about the llvm-dev
mailing list