[llvm] [Mips] Handle division by zero trap on MIPS1 (PR #201133)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 13 03:34:56 PDT 2026
================
@@ -1280,19 +1287,68 @@ addLiveIn(MachineFunction &MF, unsigned PReg, const TargetRegisterClass *RC)
return VReg;
}
-static MachineBasicBlock *insertDivByZeroTrap(MachineInstr &MI,
- MachineBasicBlock &MBB,
- const TargetInstrInfo &TII,
- bool Is64Bit, bool IsMicroMips) {
+static MachineBasicBlock *
+insertDivByZeroTrap(MachineInstr &MI, MachineBasicBlock &MBB,
+ const TargetInstrInfo &TII, bool Is64Bit,
+ const DivByZeroTrapKind TrapKind) {
if (NoZeroDivCheck)
return &MBB;
- // Insert instruction "teq $divisor_reg, $zero, 7".
MachineBasicBlock::iterator I(MI);
- MachineInstrBuilder MIB;
MachineOperand &Divisor = MI.getOperand(2);
+
+ if (TrapKind == DivByZeroTrapKind::Break) {
+ // Build instructions:
+ // MBB:
+ // bnez $divisor, $zero, SinkMBB
+ // MI $dst, $dividend, $divisor (delay slot)
+ //
+ // BreakMBB:
+ // break 7
+ //
+ // SinkMBB:
+ // fallthrough
+ const DebugLoc DL = MI.getDebugLoc();
----------------
arsenm wrote:
```suggestion
const DebugLoc &DL = MI.getDebugLoc();
```
https://github.com/llvm/llvm-project/pull/201133
More information about the llvm-commits
mailing list