[llvm] [GlobalISel] Combine G_ZEXT of undef -> 0 (PR #113764)
Thorsten Schütt via llvm-commits
llvm-commits at lists.llvm.org
Sat Oct 26 11:32:31 PDT 2024
================
@@ -2916,8 +2916,11 @@ void CombinerHelper::replaceInstWithFConstant(MachineInstr &MI, double C) {
void CombinerHelper::replaceInstWithConstant(MachineInstr &MI, int64_t C) {
assert(MI.getNumDefs() == 1 && "Expected only one def?");
- Builder.buildConstant(MI.getOperand(0), C);
- MI.eraseFromParent();
+ LLT DstTy = MRI.getType(MI.getOperand(0).getReg());
+ if (isConstantLegalOrBeforeLegalizer(DstTy)) {
----------------
tschuett wrote:
It depends on where this code is running.
```
void CombinerHelper::replaceInstWithConstant(MachineInstr &MI, int64_t C) {
assert(MI.getNumDefs() == 1 && "Expected only one def?");
LLT DstTy = MRI.getType(MI.getOperand(0).getReg());
Register SrcReg = MI.getOperand(1).getReg();
if (isConstantLegalOrBeforeLegalizer(DstTy) && MRI.hasOneNonDbgUse(SrcReg)) {
Builder.buildConstant(MI.getOperand(0), C);
MI.eraseFromParent();
}
}
```
https://github.com/llvm/llvm-project/pull/113764
More information about the llvm-commits
mailing list