Skip to content

Commit 394b417

Browse files
committed
fixup! Assume the mem operand is always there.
It's a bug if its not so let's just assume it to simplify the code.
1 parent 718a229 commit 394b417

File tree

1 file changed

+17
-28
lines changed

1 file changed

+17
-28
lines changed

llvm/lib/Target/RISCV/RISCVExpandPseudoInsts.cpp

Lines changed: 17 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -317,14 +317,12 @@ bool RISCVExpandPseudo::expandRV32ZdinxStore(MachineBasicBlock &MBB,
317317
.addReg(MBBI->getOperand(1).getReg())
318318
.add(MBBI->getOperand(2));
319319

320-
MachineMemOperand *MMOHi = nullptr;
321-
if (MBBI->hasOneMemOperand()) {
322-
MachineMemOperand *OldMMO = MBBI->memoperands().front();
323-
MachineFunction *MF = MBB.getParent();
324-
MachineMemOperand *MMOLo = MF->getMachineMemOperand(OldMMO, 0, 4);
325-
MMOHi = MF->getMachineMemOperand(OldMMO, 4, 4);
326-
MIBLo.setMemRefs(MMOLo);
327-
}
320+
assert(MBBI->hasOneMemOperand() && "Expected mem operand");
321+
MachineMemOperand *OldMMO = MBBI->memoperands().front();
322+
MachineFunction *MF = MBB.getParent();
323+
MachineMemOperand *MMOLo = MF->getMachineMemOperand(OldMMO, 0, 4);
324+
MachineMemOperand *MMOHi = MF->getMachineMemOperand(OldMMO, 4, 4);
325+
MIBLo.setMemRefs(MMOLo);
328326

329327
if (MBBI->getOperand(2).isGlobal() || MBBI->getOperand(2).isCPI()) {
330328
// FIXME: Zdinx RV32 can not work on unaligned memory.
@@ -336,16 +334,14 @@ bool RISCVExpandPseudo::expandRV32ZdinxStore(MachineBasicBlock &MBB,
336334
.addReg(Hi, getKillRegState(MBBI->getOperand(0).isKill()))
337335
.add(MBBI->getOperand(1))
338336
.add(MBBI->getOperand(2));
339-
if (MMOHi)
340-
MIBHi.setMemRefs(MMOHi);
337+
MIBHi.setMemRefs(MMOHi);
341338
} else {
342339
assert(isInt<12>(MBBI->getOperand(2).getImm() + 4));
343340
auto MIBHi = BuildMI(MBB, MBBI, DL, TII->get(RISCV::SW))
344341
.addReg(Hi, getKillRegState(MBBI->getOperand(0).isKill()))
345342
.add(MBBI->getOperand(1))
346343
.addImm(MBBI->getOperand(2).getImm() + 4);
347-
if (MMOHi)
348-
MIBHi.setMemRefs(MMOHi);
344+
MIBHi.setMemRefs(MMOHi);
349345
}
350346
MBBI->eraseFromParent();
351347
return true;
@@ -363,14 +359,11 @@ bool RISCVExpandPseudo::expandRV32ZdinxLoad(MachineBasicBlock &MBB,
363359
Register Hi =
364360
TRI->getSubReg(MBBI->getOperand(0).getReg(), RISCV::sub_gpr_odd);
365361

366-
MachineMemOperand *MMOLo = nullptr;
367-
MachineMemOperand *MMOHi = nullptr;
368-
if (MBBI->hasOneMemOperand()) {
369-
MachineMemOperand *OldMMO = MBBI->memoperands().front();
370-
MachineFunction *MF = MBB.getParent();
371-
MMOLo = MF->getMachineMemOperand(OldMMO, 0, 4);
372-
MMOHi = MF->getMachineMemOperand(OldMMO, 4, 4);
373-
}
362+
assert(MBBI->hasOneMemOperand() && "Expected mem operand");
363+
MachineMemOperand *OldMMO = MBBI->memoperands().front();
364+
MachineFunction *MF = MBB.getParent();
365+
MachineMemOperand *MMOLo = MF->getMachineMemOperand(OldMMO, 0, 4);
366+
MachineMemOperand *MMOHi = MF->getMachineMemOperand(OldMMO, 4, 4);
374367

375368
// If the register of operand 1 is equal to the Lo register, then swap the
376369
// order of loading the Lo and Hi statements.
@@ -380,8 +373,7 @@ bool RISCVExpandPseudo::expandRV32ZdinxLoad(MachineBasicBlock &MBB,
380373
auto MIBLo = BuildMI(MBB, MBBI, DL, TII->get(RISCV::LW), Lo)
381374
.addReg(MBBI->getOperand(1).getReg())
382375
.add(MBBI->getOperand(2));
383-
if (MMOLo)
384-
MIBLo.setMemRefs(MMOLo);
376+
MIBLo.setMemRefs(MMOLo);
385377
}
386378

387379
if (MBBI->getOperand(2).isGlobal() || MBBI->getOperand(2).isCPI()) {
@@ -392,24 +384,21 @@ bool RISCVExpandPseudo::expandRV32ZdinxLoad(MachineBasicBlock &MBB,
392384
.addReg(MBBI->getOperand(1).getReg())
393385
.add(MBBI->getOperand(2));
394386
MBBI->getOperand(2).setOffset(Offset);
395-
if (MMOHi)
396-
MIBHi.setMemRefs(MMOHi);
387+
MIBHi.setMemRefs(MMOHi);
397388
} else {
398389
assert(isInt<12>(MBBI->getOperand(2).getImm() + 4));
399390
auto MIBHi = BuildMI(MBB, MBBI, DL, TII->get(RISCV::LW), Hi)
400391
.addReg(MBBI->getOperand(1).getReg())
401392
.addImm(MBBI->getOperand(2).getImm() + 4);
402-
if (MMOHi)
403-
MIBHi.setMemRefs(MMOHi);
393+
MIBHi.setMemRefs(MMOHi);
404394
}
405395

406396
// Order: Hi, Lo
407397
if (IsOp1EqualToLo) {
408398
auto MIBLo = BuildMI(MBB, MBBI, DL, TII->get(RISCV::LW), Lo)
409399
.addReg(MBBI->getOperand(1).getReg())
410400
.add(MBBI->getOperand(2));
411-
if (MMOLo)
412-
MIBLo.setMemRefs(MMOLo);
401+
MIBLo.setMemRefs(MMOLo);
413402
}
414403

415404
MBBI->eraseFromParent();

0 commit comments

Comments
 (0)