Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 Mar 2013 07:41:08 +0000 (UTC)
From:      Andrew Turner <andrew@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r248459 - head/contrib/binutils/gas/config
Message-ID:  <201303180741.r2I7f8LC048036@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: andrew
Date: Mon Mar 18 07:41:08 2013
New Revision: 248459
URL: http://svnweb.freebsd.org/changeset/base/248459

Log:
  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.

Modified:
  head/contrib/binutils/gas/config/tc-arm.c

Modified: head/contrib/binutils/gas/config/tc-arm.c
==============================================================================
--- head/contrib/binutils/gas/config/tc-arm.c	Mon Mar 18 07:02:58 2013	(r248458)
+++ head/contrib/binutils/gas/config/tc-arm.c	Mon Mar 18 07:41:08 2013	(r248459)
@@ -5164,10 +5164,6 @@ parse_neon_mov (char **str, int *which_o
              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_o
               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"));



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201303180741.r2I7f8LC048036>