aboutsummaryrefslogtreecommitdiffstats
path: root/backend/CSE2.v
diff options
context:
space:
mode:
Diffstat (limited to 'backend/CSE2.v')
-rw-r--r--backend/CSE2.v9
1 files changed, 6 insertions, 3 deletions
diff --git a/backend/CSE2.v b/backend/CSE2.v
index b7665097..1b3d415d 100644
--- a/backend/CSE2.v
+++ b/backend/CSE2.v
@@ -397,7 +397,8 @@ Definition apply_instr instr (rel : RELATION.t) : RB.t :=
| Ijumptable _ _ => Some rel
| Istore _ _ _ _ _ => Some (kill_mem rel)
| Iop op args dst _ => Some (gen_oper op dst args rel)
- | Iload chunk addr args dst _ => Some (load chunk addr dst args rel)
+ | Iload TRAP chunk addr args dst _ => Some (load chunk addr dst args rel)
+ | Iload NOTRAP chunk addr args dst _ => Some (kill_reg dst rel)
| Icall _ _ _ dst _ => Some (kill_reg dst (kill_mem rel))
| Ibuiltin _ _ res _ => Some (RELATION.top) (* TODO (kill_builtin_res res x) *)
| Itailcall _ _ _ | Ireturn _ => RB.bot
@@ -461,12 +462,14 @@ Definition transf_instr (fmap : option (PMap.t RB.t))
| None => Iop op args' dst s
| Some src => Iop Omove (src::nil) dst s
end
- | Iload chunk addr args dst s =>
+ | Iload TRAP chunk addr args dst s =>
let args' := subst_args fmap pc args in
match find_load_in_fmap fmap pc chunk addr args' with
- | None => Iload chunk addr args' dst s
+ | None => Iload TRAP chunk addr args' dst s
| Some src => Iop Omove (src::nil) dst s
end
+ | Iload NOTRAP chunk addr args dst s =>
+ Iload NOTRAP chunk addr (subst_args fmap pc args) dst s
| Istore chunk addr args src s =>
Istore chunk addr (subst_args fmap pc args) src s
| Icall sig ros args dst s =>