summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>1998-06-09 13:40:34 +0000
committerXavier Leroy <xavier.leroy@inria.fr>1998-06-09 13:40:34 +0000
commit183fbec2d81d92fbba660f2e8b6fc6b0697d06ab (patch)
treeb941ffe62ef2979c27dc38f1a77b99cbebb673c5
parent88e3910ce67f3257cc7960cd050f8ed7bf552d46 (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.ml9
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