Resolve PR 22493 - the encoding to be used when pushing the stack pointer onto the stack.

PR 22493
	* config/tc-arm.c (encode_ldmstm): Do not use A2 encoding of the
	PUSH insn when pushing the stack pointer.
This commit is contained in:
Nick Clifton 2017-12-18 09:37:57 +00:00
parent 10c17abdd0
commit 4f588891ac
2 changed files with 11 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2017-12-18 Nick Clifton <nickc@redhat.com>
PR 22493
* config/tc-arm.c (encode_ldmstm): Do not use A2 encoding of the
PUSH insn when pushing the stack pointer.
2017-12-18 Jan Beulich <jbeulich@suse.com>
* config/tc-i386.c (regymm, regzmm): Delete.

View File

@ -8908,6 +8908,11 @@ encode_ldmstm(int from_push_pop_mnem)
{
int is_push = (inst.instruction & A_PUSH_POP_OP_MASK) == A1_OPCODE_PUSH;
if (is_push && one_reg == 13 /* SP */)
/* PR 22483: The A2 encoding cannot be used when
pushing the stack pointer as this is UNPREDICTABLE. */
return;
inst.instruction &= A_COND_MASK;
inst.instruction |= is_push ? A2_OPCODE_PUSH : A2_OPCODE_POP;
inst.instruction |= one_reg << 12;