Hi, In SelectionDAGISel::SelectAllBasicBlocks if (TM.Options.EnableFastISel) FastIS = TLI->createFastISel(*FuncInfo, LibInfo); followed by if (!FastIS) { LowerArguments(Fn); } else { The above implies that implementing FastIS is optional. In contrast to that, testing whether FastIS is actually been used is done by testing if TM.Options.EnableFastISel is set. For example in SelectionDAGISel::LowerArguments SDB->setValue(&Arg, Res); if (!TM.Options.EnableFastISel && Res.getOpcode() == ISD::BUILD_PAIR) { if (LoadSDNode *LNode dyn_cast<LoadSDNode>(Res.getOperand(0).getNode())) if (FrameIndexSDNode *FI dyn_cast<FrameIndexSDNode>(LNode->getBasePtr().getNode())) FuncInfo->setArgumentFrameIndex(&Arg, FI->getIndex()); } Is it in BUG or am I missing something? Thanks, Yaniv
Not the right mailing list? On Tue, 2017-10-24 at 00:55 +0300, Yaniv wrote:> Hi, > > In SelectionDAGISel::SelectAllBasicBlocks > > if (TM.Options.EnableFastISel) > FastIS = TLI->createFastISel(*FuncInfo, LibInfo); > > followed by > > if (!FastIS) { > LowerArguments(Fn); > } else { > > The above implies that implementing FastIS is optional. > > > In contrast to that, testing whether FastIS is actually been used is > done by testing if TM.Options.EnableFastISel is set. > > For example in SelectionDAGISel::LowerArguments > > SDB->setValue(&Arg, Res); > if (!TM.Options.EnableFastISel && Res.getOpcode() == > ISD::BUILD_PAIR) { > if (LoadSDNode *LNode > dyn_cast<LoadSDNode>(Res.getOperand(0).getNode())) > if (FrameIndexSDNode *FI > dyn_cast<FrameIndexSDNode>(LNode- > >getBasePtr().getNode())) > FuncInfo->setArgumentFrameIndex(&Arg, FI->getIndex()); > } > > > Is it in BUG or am I missing something? > > Thanks, > Yaniv
On 10/30/2017 2:50 PM, Yaniv via llvm-dev wrote:> Not the right mailing list?This is the right mailing list; sometimes people just lose track of an email. Looking briefly at your question, yes, I agree it's a bug, but probably not one which has much impact, given the code it controls. -Eli> > On Tue, 2017-10-24 at 00:55 +0300, Yaniv wrote: >> Hi, >> >> In SelectionDAGISel::SelectAllBasicBlocks >> >> if (TM.Options.EnableFastISel) >> FastIS = TLI->createFastISel(*FuncInfo, LibInfo); >> >> followed by >> >> if (!FastIS) { >> LowerArguments(Fn); >> } else { >> >> The above implies that implementing FastIS is optional. >> >> >> In contrast to that, testing whether FastIS is actually been used is >> done by testing if TM.Options.EnableFastISel is set. >> >> For example in SelectionDAGISel::LowerArguments >> >> SDB->setValue(&Arg, Res); >> if (!TM.Options.EnableFastISel && Res.getOpcode() =>> ISD::BUILD_PAIR) { >> if (LoadSDNode *LNode >> dyn_cast<LoadSDNode>(Res.getOperand(0).getNode())) >> if (FrameIndexSDNode *FI >> dyn_cast<FrameIndexSDNode>(LNode- >>> getBasePtr().getNode())) >> FuncInfo->setArgumentFrameIndex(&Arg, FI->getIndex()); >> } >> >> >> Is it in BUG or am I missing something? >> >> Thanks, >> Yaniv > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev-- Employee of Qualcomm Innovation Center, Inc. Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project