mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-20 19:25:05 +00:00
SDAG: Implement Select instead of SelectImpl in BPFDAGToDAGISel
- Where we were returning a node before, call ReplaceNode instead. - Where we were calling SelectNodeTo, just return afterwards. Part of llvm.org/pr26808. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@269350 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
42e9bbeb4c
commit
156b5ed92c
@ -46,7 +46,7 @@ private:
|
||||
// Include the pieces autogenerated from the target description.
|
||||
#include "BPFGenDAGISel.inc"
|
||||
|
||||
SDNode *SelectImpl(SDNode *N) override;
|
||||
void Select(SDNode *N) override;
|
||||
|
||||
// Complex Pattern for address selection.
|
||||
bool SelectAddr(SDValue Addr, SDValue &Base, SDValue &Offset);
|
||||
@ -115,7 +115,7 @@ bool BPFDAGToDAGISel::SelectFIAddr(SDValue Addr, SDValue &Base, SDValue &Offset)
|
||||
return false;
|
||||
}
|
||||
|
||||
SDNode *BPFDAGToDAGISel::SelectImpl(SDNode *Node) {
|
||||
void BPFDAGToDAGISel::Select(SDNode *Node) {
|
||||
unsigned Opcode = Node->getOpcode();
|
||||
|
||||
// Dump information about the Node being selected
|
||||
@ -124,7 +124,7 @@ SDNode *BPFDAGToDAGISel::SelectImpl(SDNode *Node) {
|
||||
// If we have a custom node, we already have selected!
|
||||
if (Node->isMachineOpcode()) {
|
||||
DEBUG(dbgs() << "== "; Node->dump(CurDAG); dbgs() << '\n');
|
||||
return NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
// tablegen selection should be handled here.
|
||||
@ -168,22 +168,17 @@ SDNode *BPFDAGToDAGISel::SelectImpl(SDNode *Node) {
|
||||
EVT VT = Node->getValueType(0);
|
||||
SDValue TFI = CurDAG->getTargetFrameIndex(FI, VT);
|
||||
unsigned Opc = BPF::MOV_rr;
|
||||
if (Node->hasOneUse())
|
||||
return CurDAG->SelectNodeTo(Node, Opc, VT, TFI);
|
||||
return CurDAG->getMachineNode(Opc, SDLoc(Node), VT, TFI);
|
||||
if (Node->hasOneUse()) {
|
||||
CurDAG->SelectNodeTo(Node, Opc, VT, TFI);
|
||||
return;
|
||||
}
|
||||
ReplaceNode(Node, CurDAG->getMachineNode(Opc, SDLoc(Node), VT, TFI));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Select the default instruction
|
||||
SDNode *ResNode = SelectCode(Node);
|
||||
|
||||
DEBUG(dbgs() << "=> ";
|
||||
if (ResNode == nullptr || ResNode == Node)
|
||||
Node->dump(CurDAG);
|
||||
else
|
||||
ResNode->dump(CurDAG);
|
||||
dbgs() << '\n');
|
||||
return ResNode;
|
||||
SelectCode(Node);
|
||||
}
|
||||
|
||||
FunctionPass *llvm::createBPFISelDag(BPFTargetMachine &TM) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user