[llvm-dev] EnableFastISel

Yaniv via llvm-dev llvm-dev at lists.llvm.org
Mon Oct 23 14:55:32 PDT 2017


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



More information about the llvm-dev mailing list