From 9021825d1e73998b99c81e89c73796f6f2845471 Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Wed, 15 Apr 2015 11:56:51 +0100 Subject: Type MoveOperands. The ParallelMoveResolver implementation needs to know if a move is for 64bits or not, to handle swaps correctly. Bug found, and test case courtesy of Serguei I. Katkov. Change-Id: I9a0917a1cfed398c07e57ad6251aea8c9b0b8506 --- compiler/optimizing/code_generator.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'compiler/optimizing/code_generator.cc') diff --git a/compiler/optimizing/code_generator.cc b/compiler/optimizing/code_generator.cc index 8736374306..f7fa5db8d5 100644 --- a/compiler/optimizing/code_generator.cc +++ b/compiler/optimizing/code_generator.cc @@ -802,10 +802,15 @@ void CodeGenerator::ClearSpillSlotsFromLoopPhisInStackMap(HSuspendCheck* suspend } } -void CodeGenerator::EmitParallelMoves(Location from1, Location to1, Location from2, Location to2) { +void CodeGenerator::EmitParallelMoves(Location from1, + Location to1, + Primitive::Type type1, + Location from2, + Location to2, + Primitive::Type type2) { HParallelMove parallel_move(GetGraph()->GetArena()); - parallel_move.AddMove(from1, to1, nullptr); - parallel_move.AddMove(from2, to2, nullptr); + parallel_move.AddMove(from1, to1, type1, nullptr); + parallel_move.AddMove(from2, to2, type2, nullptr); GetMoveResolver()->EmitNativeCode(¶llel_move); } -- cgit v1.2.3-59-g8ed1b