diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 1998-06-09 13:40:34 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 1998-06-09 13:40:34 +0000 |
commit | 183fbec2d81d92fbba660f2e8b6fc6b0697d06ab (patch) | |
tree | b941ffe62ef2979c27dc38f1a77b99cbebb673c5 | |
parent | 88e3910ce67f3257cc7960cd050f8ed7bf552d46 (diff) |
Reconnaitre les comparaisons cmpi const_pointer
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@1978 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r-- | asmcomp/selectgen.ml | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/asmcomp/selectgen.ml b/asmcomp/selectgen.ml index 096076911..2b973921e 100644 --- a/asmcomp/selectgen.ml +++ b/asmcomp/selectgen.ml @@ -57,7 +57,8 @@ let size_expr env exp = let regs = Tbl.find id env in size_machtype (Array.map (fun r -> r.typ) regs) with Not_found -> - fatal_error("Selection.size_expr: unbound var " ^ Ident.name id) + fatal_error("Selection.size_expr: unbound var " ^ + Ident.unique_name id) end | Ctuple el -> List.fold_right (fun e sz -> size localenv e + sz) el 0 @@ -288,6 +289,10 @@ method select_condition = function (Iinttest_imm(Isigned cmp, n), arg1) | Cop(Ccmpi cmp, [Cconst_int n; arg2]) when self#is_immediate n -> (Iinttest_imm(Isigned(swap_comparison cmp), n), arg2) + | Cop(Ccmpi cmp, [arg1; Cconst_pointer n]) when self#is_immediate n -> + (Iinttest_imm(Isigned cmp, n), arg1) + | Cop(Ccmpi cmp, [Cconst_pointer n; arg2]) when self#is_immediate n -> + (Iinttest_imm(Isigned(swap_comparison cmp), n), arg2) | Cop(Ccmpi cmp, args) -> (Iinttest(Isigned cmp), Ctuple args) | Cop(Ccmpa cmp, [arg1; Cconst_pointer n]) when self#is_immediate n -> @@ -370,7 +375,7 @@ method emit_expr env exp = begin try Tbl.find v env with Not_found -> - fatal_error("Selection.emit_expr: unbound var " ^ Ident.name v) + fatal_error("Selection.emit_expr: unbound var " ^ Ident.unique_name v) end | Clet(v, e1, e2) -> self#emit_expr (self#emit_let env v e1) e2 |