Kostya Serebryany
2011-May-17 14:09 UTC
[LLVMdev] "Not all catch info was assigned to a landing pad!"' failed
Hi, My transformation phase inserts an if-the-else construct into a BB. If that BB contains llvm.eh.exception, I get an Assertion at some later point: lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp:212: void llvm::FunctionLoweringInfo::clear(): Assertion `CatchInfoFound.size() == CatchInfoLost.size() && "Not all catch info was assigned to a landing pad!"' failed. Is there some rule that forbids splitting BBs with EH? Or maybe something special needs to be done when splitting such BB? The code is here: http://code.google.com/p/address-sanitizer/source/browse/trunk/llvm/AddressSanitizer.cpp , see splitBlockAndInsertIfThen Thanks, --kcc -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110517/0e107689/attachment.html>
Duncan Sands
2011-May-17 19:54 UTC
[LLVMdev] "Not all catch info was assigned to a landing pad!"' failed
Hi Kostya,> My transformation phase inserts an if-the-else construct into a BB. > If that BB contains llvm.eh.exception, I get an Assertion at some later point: > > lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp:212: > void llvm::FunctionLoweringInfo::clear(): Assertion `CatchInfoFound.size() => CatchInfoLost.size() && "Not all catch info was assigned to a landing pad!"' > failed. > > Is there some rule that forbids splitting BBs with EH? > Or maybe something special needs to be done when splitting such BB?sadly the code generators can only handle the case in which the eh.selector call is in the landing pad (or in the basic block following it). I suggest you put your branch after the calls to eh.exception and eh.selector. Ciao, Duncan.> > The code is here: > http://code.google.com/p/address-sanitizer/source/browse/trunk/llvm/AddressSanitizer.cpp , > see splitBlockAndInsertIfThen > > Thanks, > > --kcc > > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Konstantin Serebryany
2011-May-19 16:53 UTC
[LLVMdev] "Not all catch info was assigned to a landing pad!"' failed
On Tue, May 17, 2011 at 11:54 PM, Duncan Sands <baldrick at free.fr> wrote:> Hi Kostya, > > > My transformation phase inserts an if-the-else construct into a BB. > > If that BB contains llvm.eh.exception, I get an Assertion at some later > point: > > > > lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp:212: > > void llvm::FunctionLoweringInfo::clear(): Assertion > `CatchInfoFound.size() => > CatchInfoLost.size() && "Not all catch info was assigned to a landing > pad!"' > > failed. > > > > Is there some rule that forbids splitting BBs with EH? > > Or maybe something special needs to be done when splitting such BB? > > sadly the code generators can only handle the case in which the eh.selector > call > is in the landing pad (or in the basic block following it). I suggest you > put > your branch after the calls to eh.exception and eh.selector. >Thanks! --kcc> > Ciao, Duncan. > > > > > The code is here: > > > http://code.google.com/p/address-sanitizer/source/browse/trunk/llvm/AddressSanitizer.cpp, > > see splitBlockAndInsertIfThen > > > > Thanks, > > > > --kcc > > > > > > > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110519/6788ba67/attachment.html>
Apparently Analagous Threads
- [LLVMdev] "Not all catch info was assigned to a landing pad!"' failed
- [LLVMdev] Assertion Failure: Not all catch info was assigned to a landing pad
- [LLVMdev] ARM and lowerinvoke
- [LLVMdev] ARM and lowerinvoke
- [LLVMdev] ExtractBasicBlock() on block that ends with invoke or unreachable triggers assert() in llc