diff options
| author | Graydon Hoare <[email protected]> | 2010-10-12 16:51:27 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2010-10-12 16:51:27 -0700 |
| commit | 69ae63d4b02b15d47ab90a4bf96880329601f116 (patch) | |
| tree | a54493f852b7c8c187cb363a09f0f223efae4e1a /src/boot/me | |
| parent | rustc: Add mutability to tuple literals (diff) | |
| download | rust-69ae63d4b02b15d47ab90a4bf96880329601f116.tar.xz rust-69ae63d4b02b15d47ab90a4bf96880329601f116.zip | |
Fix horribly embarassing signedness bug in backend, plus related regressions.
Diffstat (limited to 'src/boot/me')
| -rw-r--r-- | src/boot/me/trans.ml | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/boot/me/trans.ml b/src/boot/me/trans.ml index cb0b7c83..67a96030 100644 --- a/src/boot/me/trans.ml +++ b/src/boot/me/trans.ml @@ -316,6 +316,10 @@ let trans_visitor Il.Mem (mem, Il.ScalarTy (Il.ValTy word_bits)) in + let imov (dst:Il.cell) (src:Il.operand) : unit = + emit (Il.imov dst src) + in + let mov (dst:Il.cell) (src:Il.operand) : unit = emit (Il.umov dst src) in @@ -398,8 +402,10 @@ let trans_visitor (in_quad_category "crate_rel -> ptr" (fun _ -> let cell = next_vreg_cell (Il.AddrTy rty) in + let diff = next_vreg_cell (Il.AddrTy rty) in mov cell (Il.Cell (curr_crate_ptr())); - add_to cell rel; + imov diff rel; + add_to cell (Il.Cell diff); cell)) (* @@ -1566,7 +1572,7 @@ let trans_visitor Abi.load_fixup_addr (emitter()) crate_ptr_reg cx.ctxt_crate_fixup Il.OpaqueTy; mov (word_at (fp_imm frame_crate_ptr)) (Il.Cell (crate_ptr_cell)); - mov (word_at (fp_imm frame_fns_disp)) frame_fns + imov (word_at (fp_imm frame_fns_disp)) frame_fns and check_interrupt_flag _ = if cx.ctxt_sess.Session.sess_minimal @@ -2307,7 +2313,7 @@ let trans_visitor else Il.JL in (* Start with assumption lhs < rhs *) - mov result neg_one; + imov result neg_one; let lhs_lt_rhs_jmps = trans_compare ~ty_params ~cjmp ~ty lhs rhs in |