diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp b/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp index 97ad7a571c8..5b038df4ae3 100644 --- a/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp +++ b/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp @@ -65,21 +65,16 @@ 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); - // 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()); - } + 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); + ReplaceNode(Node, New.getNode()); + return; } - break; - default: - break; } // Select the default instruction. |

