This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb] [AArch64][SVE 01/32] Remove parse_neon_operand_type
- From: Richard Sandiford <rsandifo at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 21 Sep 2016 16:03:40 -0000
- Subject: [binutils-gdb] [AArch64][SVE 01/32] Remove parse_neon_operand_type
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a235d3aece0b1eeba3789f7e15d64e2e03224a4e
commit a235d3aece0b1eeba3789f7e15d64e2e03224a4e
Author: Richard Sandiford <richard.sandiford@arm.com>
Date: Wed Sep 21 16:47:57 2016 +0100
[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.
Diff:
---
gas/ChangeLog | 5 +++++
gas/config/tc-aarch64.c | 31 ++++---------------------------
2 files changed, 9 insertions(+), 27 deletions(-)
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 8a4e15f..0f68aba 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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.
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index 34fdc53..ce8e713 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -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;