From 1098acd46d4768a01c57ec319905cc6032ad1732 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Sat, 20 Mar 2021 13:42:17 -0400 Subject: [PATCH] GlobalISel: Avoid unnecessary truncation to i64 We can just directly pass through the APInt to create a new constant. --- llvm/lib/CodeGen/GlobalISel/CSEMIRBuilder.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/lib/CodeGen/GlobalISel/CSEMIRBuilder.cpp b/llvm/lib/CodeGen/GlobalISel/CSEMIRBuilder.cpp index 2c86f06..82942b9 100644 --- a/llvm/lib/CodeGen/GlobalISel/CSEMIRBuilder.cpp +++ b/llvm/lib/CodeGen/GlobalISel/CSEMIRBuilder.cpp @@ -189,7 +189,7 @@ MachineInstrBuilder CSEMIRBuilder::buildInstr(unsigned Opc, assert(DstOps.size() == 1 && "Invalid dsts"); if (Optional Cst = ConstantFoldBinOp(Opc, SrcOps[0].getReg(), SrcOps[1].getReg(), *getMRI())) - return buildConstant(DstOps[0], Cst->getSExtValue()); + return buildConstant(DstOps[0], *Cst); break; } case TargetOpcode::G_SEXT_INREG: { @@ -200,7 +200,7 @@ MachineInstrBuilder CSEMIRBuilder::buildInstr(unsigned Opc, const SrcOp &Src1 = SrcOps[1]; if (auto MaybeCst = ConstantFoldExtOp(Opc, Src0.getReg(), Src1.getImm(), *getMRI())) - return buildConstant(Dst, MaybeCst->getSExtValue()); + return buildConstant(Dst, *MaybeCst); break; } } -- 2.7.4