> -----Original Message----- > From: Beignet [mailto:[email protected]] On Behalf Of > Zhigang Gong > Sent: Thursday, April 02, 2015 12:24 PM > To: [email protected] > Cc: Gong, Zhigang > Subject: [Beignet] [PATCH] GBE: skip current BB if it is not in a PN node's > incoming BB list. > > This is a possible situation especially for a complex switch case lowering.
Could you give me an example, according to llvm doc @lib/IR/Verifier.cpp // * PHI nodes must have an entry for each predecessor, with no extras. I think if you add one verifier pass before genwriter, it could not pass verifier pass. Does it occur only on special llvm version? Thanks! Ruiling > > Signed-off-by: Zhigang Gong <[email protected]> > --- > backend/src/llvm/llvm_gen_backend.cpp | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/backend/src/llvm/llvm_gen_backend.cpp > b/backend/src/llvm/llvm_gen_backend.cpp > index 0487bcb..4008704 100644 > --- a/backend/src/llvm/llvm_gen_backend.cpp > +++ b/backend/src/llvm/llvm_gen_backend.cpp > @@ -1186,6 +1186,10 @@ namespace gbe > void GenWriter::emitMovForPHI(BasicBlock *curr, BasicBlock *succ) { > for (BasicBlock::iterator I = succ->begin(); isa<PHINode>(I); ++I) { > PHINode *PN = cast<PHINode>(I); > + // If current BB is not in the PN's incomming block list, > + // just skip it here. > + if (PN->getBasicBlockIndex(curr) < 0) > + continue; > Value *IV = PN->getIncomingValueForBlock(curr); > Type *llvmType = PN->getType(); > const ir::Type type = getType(ctx, llvmType); > -- > 1.9.1 > > _______________________________________________ > Beignet mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
