[AArch64][SVE 01/32] Remove parse_neon_operand_type
A false return from parse_neon_operand_type had an overloaded meaning: either the parsing failed, or there was nothing to parse (which isn't necessarily an error). The only caller, parse_typed_reg, would therefore not consume the suffix if it was invalid but instead (successfully) parse the register without a suffix. It would still leave inst.parsing_error with an error about the invalid suffix. It seems wrong for a successful parse to leave an error message, so this patch makes parse_typed_reg return PARSE_FAIL instead. The patch doesn't seem to make much difference in practice. Most possible follow-on errors use set_first_error and so the error about the suffix tended to win despite the successful parse. gas/ * config/tc-aarch64.c (parse_neon_operand_type): Delete. (parse_typed_reg): Call parse_neon_type_for_operand directly.
This commit is contained in:
parent
3d0ec88224
commit
a235d3aece
@ -1,3 +1,8 @@
|
||||
2016-09-21 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
* config/tc-aarch64.c (parse_neon_operand_type): Delete.
|
||||
(parse_typed_reg): Call parse_neon_type_for_operand directly.
|
||||
|
||||
2016-09-15 Claudiu Zissulescu <claziss@synopsys.com>
|
||||
|
||||
* testsuite/gas/arc/textinsnxop.d: New file.
|
||||
|
@ -821,31 +821,6 @@ elt_size:
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Parse a single type, e.g. ".8b", leading period included.
|
||||
Only applicable to Vn registers.
|
||||
|
||||
Return TRUE on success; otherwise return FALSE. */
|
||||
static bfd_boolean
|
||||
parse_neon_operand_type (struct neon_type_el *vectype, char **ccp)
|
||||
{
|
||||
char *str = *ccp;
|
||||
|
||||
if (*str == '.')
|
||||
{
|
||||
if (! parse_neon_type_for_operand (vectype, &str))
|
||||
{
|
||||
first_error (_("vector type expected"));
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
*ccp = str;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Parse a register of the type TYPE.
|
||||
|
||||
Return PARSE_FAIL if the string pointed by *CCP is not a valid register
|
||||
@ -889,9 +864,11 @@ parse_typed_reg (char **ccp, aarch64_reg_type type, aarch64_reg_type *rtype,
|
||||
}
|
||||
type = reg->type;
|
||||
|
||||
if (type == REG_TYPE_VN
|
||||
&& parse_neon_operand_type (&parsetype, &str))
|
||||
if (type == REG_TYPE_VN && *str == '.')
|
||||
{
|
||||
if (!parse_neon_type_for_operand (&parsetype, &str))
|
||||
return PARSE_FAIL;
|
||||
|
||||
/* Register if of the form Vn.[bhsdq]. */
|
||||
is_typed_vecreg = TRUE;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user