This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]