enforce integer division via explicit builtins
This commit is contained in:
@@ -681,7 +681,8 @@ lower_expr :: proc(state: ^State, expr_id: hir.Expr_Id) -> ir.Instruction_Id {
|
||||
case .Negate:
|
||||
stack[frame_index].stage = 5
|
||||
append(&stack, Lower_Expr_Frame{expr=expr.left})
|
||||
case .Add, .Sub, .Mul, .Div, .Pointer_Add:
|
||||
case .Add, .Sub, .Mul, .Div, .Div_Trunc, .Div_Floor, .Div_Exact, .Div_Ceil,
|
||||
.Rem, .Mod, .Pointer_Add:
|
||||
stack[frame_index].stage = 2
|
||||
append(&stack, Lower_Expr_Frame{expr=expr.left})
|
||||
case .Call:
|
||||
@@ -760,6 +761,12 @@ lower_expr :: proc(state: ^State, expr_id: hir.Expr_Id) -> ir.Instruction_Id {
|
||||
case .Sub: op = .Sub_Checked
|
||||
case .Mul: op = .Mul_Checked
|
||||
case .Div: op = .Div_Checked
|
||||
case .Div_Trunc: op = .Div_Trunc_Checked
|
||||
case .Div_Floor: op = .Div_Floor_Checked
|
||||
case .Div_Exact: op = .Div_Exact_Checked
|
||||
case .Div_Ceil: op = .Div_Ceil_Checked
|
||||
case .Rem: op = .Rem_Checked
|
||||
case .Mod: op = .Mod_Checked
|
||||
case .Pointer_Add: op = .Pointer_Add
|
||||
}
|
||||
last = append_instruction(state, ir.Instruction{
|
||||
|
||||
Reference in New Issue
Block a user