[x64] Allow kX64Push Instruction to use spill slot as Operand

IA support both "push reg" and "push [mem]" assemble instruction.
Use OperandGenerator::UseAny() for initializing Operand of kX64Push with
should be more willing to use spill slots (Use constraints are marked
as register-beneficial; UseAny are not)

UnallocatedOperand: :REGISTER_OR_SLOT. That way, the register allocator
Change-Id: I8ffd66915c8acd64221182710257232ef19f06d6
Reviewed-on: https://chromium-review.googlesource.com/c/1337312
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57708}
This commit is contained in:
Tao Pan 2018-11-15 18:16:57 +08:00 committed by Commit Bot
parent 2359181f62
commit 7acffecc50

View File

@ -1543,7 +1543,7 @@ void InstructionSelector::EmitPrepareArguments(
opcode |= AddressingModeField::encode(mode);
Emit(opcode, 0, outputs, input_count, inputs);
} else {
Emit(kX64Push, g.NoOutput(), g.Use(input.node));
Emit(kX64Push, g.NoOutput(), g.UseAny(input.node));
}
}
}