From 7b91933eed28c5b4dee2fc96cd903395247d63d1 Mon Sep 17 00:00:00 2001 From: Roy Frostig Date: Tue, 3 Aug 2010 17:42:22 -0700 Subject: Avoid mem cmp mem in trans even though it's an X86ism becase we don't always catch it later on. --- src/boot/me/trans.ml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/boot/me/trans.ml b/src/boot/me/trans.ml index 813b9065..faa39442 100644 --- a/src/boot/me/trans.ml +++ b/src/boot/me/trans.ml @@ -625,7 +625,17 @@ let trans_visitor let op_b = sub_sz b in let tmp = next_vreg_cell word_sty in mov tmp op_a; - emit (Il.cmp op_a op_b); + (* + * FIXME: X86-ism going via a vreg; mem op= mem doesn't + * work and IL lacks sufficient brains to cope just now. + * Instead, should be + * + * emit (Il.cmp op_a op_b) + * + * Luckily this isn't the worst hack since we already + * needed a tmp vreg for op_a. + *) + emit (Il.cmp (Il.Cell tmp) op_b); let jmp = mark () in emit (Il.jmp Il.JAE Il.CodeNone); mov tmp op_b; -- cgit v1.2.3