forked from OSchip/llvm-project
[RISCV][NFC] Clean up RISCVDAGToDAGISel::Select
As pointed out in post-commit review of r318738, `return ReplaceNode(..)` when both ReplaceNode and the current function return void is confusing. This patch moves to using a more obvious early return, and moves to just using an if to catch the one case we currently care about. A future patch that adds further custom instruction selection can introduce a switch. llvm-svn: 318757
This commit is contained in:
parent
51d82696db
commit
9caefe364a
|
@ -65,22 +65,17 @@ void RISCVDAGToDAGISel::Select(SDNode *Node) {
|
|||
// Instruction Selection not handled by the auto-generated tablegen selection
|
||||
// should be handled here.
|
||||
EVT VT = Node->getValueType(0);
|
||||
switch (Opcode) {
|
||||
case ISD::Constant:
|
||||
if (VT == XLenVT) {
|
||||
ConstantSDNode *ConstNode = cast<ConstantSDNode>(Node);
|
||||
if (Opcode == ISD::Constant && VT == XLenVT) {
|
||||
auto *ConstNode = cast<ConstantSDNode>(Node);
|
||||
// Materialize zero constants as copies from X0. This allows the coalescer
|
||||
// to propagate these into other instructions.
|
||||
if (ConstNode->isNullValue()) {
|
||||
SDValue New = CurDAG->getCopyFromReg(CurDAG->getEntryNode(),
|
||||
SDLoc(Node), RISCV::X0, XLenVT);
|
||||
return ReplaceNode(Node, New.getNode());
|
||||
SDValue New = CurDAG->getCopyFromReg(CurDAG->getEntryNode(), SDLoc(Node),
|
||||
RISCV::X0, XLenVT);
|
||||
ReplaceNode(Node, New.getNode());
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
// Select the default instruction.
|
||||
SelectCode(Node);
|
||||
|
|
Loading…
Reference in New Issue