| Index: runtime/vm/flow_graph_allocator.cc | 
| diff --git a/runtime/vm/flow_graph_allocator.cc b/runtime/vm/flow_graph_allocator.cc | 
| index bb092dfc8c810bf52cb39c8c94129f9e5035f006..e5f0865d8bff0b89cfb3aee8f42c5db0488d555b 100644 | 
| --- a/runtime/vm/flow_graph_allocator.cc | 
| +++ b/runtime/vm/flow_graph_allocator.cc | 
| @@ -1150,9 +1150,20 @@ void FlowGraphAllocator::ProcessOneInstruction(BlockEntryInstr* block, | 
| // Normalize same-as-first-input output if input is specified as | 
| // fixed register. | 
| if (locs->out(0).IsUnallocated() && | 
| -      (locs->out(0).policy() == Location::kSameAsFirstInput) && | 
| -      (locs->in(0).IsMachineRegister())) { | 
| -    locs->set_out(0, locs->in(0)); | 
| +      (locs->out(0).policy() == Location::kSameAsFirstInput)) { | 
| +    if (locs->in(0).IsPairLocation()) { | 
| +      // Pair input, pair output. | 
| +      PairLocation* in_pair = locs->in(0).AsPairLocation(); | 
| +      ASSERT(in_pair->At(0).IsMachineRegister() == | 
| +             in_pair->At(1).IsMachineRegister()); | 
| +      if (in_pair->At(0).IsMachineRegister() && | 
| +          in_pair->At(1).IsMachineRegister()) { | 
| +        locs->set_out(0, Location::Pair(in_pair->At(0), in_pair->At(1))); | 
| +      } | 
| +    } else if (locs->in(0).IsMachineRegister()) { | 
| +      // Single input, single output. | 
| +      locs->set_out(0, locs->in(0)); | 
| +    } | 
| } | 
|  | 
| const bool output_same_as_first_input = | 
|  |