File tree Expand file tree Collapse file tree 3 files changed +21
-9
lines changed Expand file tree Collapse file tree 3 files changed +21
-9
lines changed Original file line number Diff line number Diff line change 1
1
---
2
- refs/heads/master: 5d2e94838ecd0043cc8dfbe2f19d16d9703c2890
2
+ refs/heads/master: 60e5ad384e6b748a780148e9232b9bb44cd08cec
Original file line number Diff line number Diff line change @@ -398,6 +398,7 @@ TEST_XFAILS_X86 := $(TASK_XFAILS) \
398
398
test/run-pass/generic-recursive-tag.rs \
399
399
test/run-pass/int-lib.rs \
400
400
test/run-pass/iter-ret.rs \
401
+ test/run-pass/lib-deque.rs \
401
402
test/run-pass/lib-map.rs \
402
403
test/run-pass/mlist-cycle.rs \
403
404
test/run-pass/obj-as.rs \
Original file line number Diff line number Diff line change @@ -311,14 +311,25 @@ let emit_target_specific
311
311
Il. Mem (Il. next_spill_slot e
312
312
(Il. ScalarTy (Il. operand_scalar_ty op)))
313
313
in
314
- let lhs_spill = next_spill_like lhs in
315
- let rhs_spill = next_spill_like rhs in
316
-
317
- mov lhs_spill lhs;
318
- mov rhs_spill rhs;
319
-
320
- mov lhs_eax (Il. Cell lhs_spill);
321
- mov rhs_ecx (Il. Cell rhs_spill);
314
+ let is_eax cell =
315
+ match cell with
316
+ Il. Cell (Il. Reg (Il. Hreg hr , _ )) -> hr = eax
317
+ | _ -> false
318
+ in
319
+ if is_eax lhs
320
+ then
321
+ mov rhs_ecx rhs
322
+ else
323
+ begin
324
+ let lhs_spill = next_spill_like lhs in
325
+ let rhs_spill = next_spill_like rhs in
326
+
327
+ mov lhs_spill lhs;
328
+ mov rhs_spill rhs;
329
+
330
+ mov lhs_eax (Il. Cell lhs_spill);
331
+ mov rhs_ecx (Il. Cell rhs_spill);
332
+ end ;
322
333
323
334
put (Il. Binary
324
335
{ b with
You can’t perform that action at this time.
0 commit comments