Some ARM vmov similar to 'vmov.f32 s1, s2' will incorrectly have the second

register added to the symbol table by the assembler. On further
investigation it was found the problem was with the my_get_expression
function. This is called by parse_big_immediate.

Fix this by moving the call to parse_big_immediate to the end of the if,
else if, ..., else block.
This commit is contained in:
Andrew Turner 2013-03-18 07:41:08 +00:00
parent bd247e9ddd
commit 90ab443e31
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=248459

View File

@ -5164,10 +5164,6 @@ parse_neon_mov (char **str, int *which_operand)
Case 10: VMOV.F32 <Sd>, #<imm>
Case 11: VMOV.F64 <Dd>, #<imm> */
inst.operands[i].immisfloat = 1;
else if (parse_big_immediate (&ptr, i) == SUCCESS)
/* Case 2: VMOV<c><q>.<dt> <Qd>, #<imm>
Case 3: VMOV<c><q>.<dt> <Dd>, #<imm> */
;
else if ((val = arm_typed_reg_parse (&ptr, REG_TYPE_NSDQ, &rtype,
&optype)) != FAIL)
{
@ -5207,6 +5203,10 @@ parse_neon_mov (char **str, int *which_operand)
inst.operands[i++].present = 1;
}
}
else if (parse_big_immediate (&ptr, i) == SUCCESS)
/* Case 2: VMOV<c><q>.<dt> <Qd>, #<imm>
Case 3: VMOV<c><q>.<dt> <Dd>, #<imm> */
;
else
{
first_error (_("expected <Rm> or <Dm> or <Qm> operand"));