Accept L and LL suffixes to integer constants.
authorNick Clifton <nickc@redhat.com>
Fri, 11 Nov 2016 15:13:07 +0000 (15:13 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 11 Nov 2016 15:13:07 +0000 (15:13 +0000)
PR gas/20732
* expr.c (integer_constant): If tc_allow_L_suffix is defined and
non-zero then accept a L or LL suffix.
* testsuite/gas/sparc/pr20732.d: New test source file.
* testsuite/gas/sparc/pr20732.d: New test output file.
* testsuite/gas/sparc/sparc.exp: Run new test.

gas/ChangeLog
gas/expr.c
gas/testsuite/gas/sparc/pr20732.d [new file with mode: 0644]
gas/testsuite/gas/sparc/pr20732.s [new file with mode: 0644]
gas/testsuite/gas/sparc/sparc.exp

index 9711d3a23c6eb6dcf7eb04cc5c66048e4957f0d7..cefa50176f3f16e2c6b299f487a5c6f858f189d3 100644 (file)
@@ -1,3 +1,12 @@
+2016-11-11  Nick Clifton  <nickc@redhat.com>
+
+       PR gas/20732
+       * expr.c (integer_constant): If tc_allow_L_suffix is defined and
+       non-zero then accept a L or LL suffix.
+       * testsuite/gas/sparc/pr20732.d: New test source file.
+       * testsuite/gas/sparc/pr20732.d: New test output file.
+       * testsuite/gas/sparc/sparc.exp: Run new test.
+
 2016-11-11  Szabolcs Nagy  <szabolcs.nagy@arm.com>
 
        * testsuite/gas/aarch64/pac.s: Add ARMv8.3 branch instruction tests.
index 1cdd081322f3b291b55e187b9e1cd19917d2d4b9..e8d553dd422b9a218bca611034c85b99cce0cc98 100644 (file)
@@ -515,6 +515,14 @@ integer_constant (int radix, expressionS *expressionP)
   if (tc_allow_U_suffix && (c == 'U' || c == 'u'))
     c = * input_line_pointer++;
 
+#ifndef tc_allow_L_suffix
+#define tc_allow_L_suffix 1
+#endif
+  /* PR 20732: Look for, and ignore, a L or LL suffix to the number.  */
+  if (tc_allow_L_suffix)
+    while (c == 'L' || c == 'l')
+      c = * input_line_pointer++;
+
   if (small)
     {
       /* Here with number, in correct radix. c is the next char.
diff --git a/gas/testsuite/gas/sparc/pr20732.d b/gas/testsuite/gas/sparc/pr20732.d
new file mode 100644 (file)
index 0000000..1d3ddbe
--- /dev/null
@@ -0,0 +1,14 @@
+#as: 
+#objdump: -dr --prefix-addresses
+#name: PR20732 - make sure that the L and LL suffix is accepted on constant values
+
+.*: +file format .*
+
+Disassembly of section .text:
+[0x]+000.*sethi[       ]+%hi\(0x3b9ac800\), %l5
+[0x]+004.*or[  ]+%l5, 0x200, %l5.*
+[0x]+008.*sethi[       ]+%hi\(0x3b9ac800\), %l5
+[0x]+00c.*or[  ]+%l5, 0x200, %l5.*
+[0x]+010.*sethi[       ]+%hi\(0x3b9ac800\), %l5
+[0x]+014.*or[  ]+%l5, 0x200, %l5.*
+#pass
diff --git a/gas/testsuite/gas/sparc/pr20732.s b/gas/testsuite/gas/sparc/pr20732.s
new file mode 100644 (file)
index 0000000..265c880
--- /dev/null
@@ -0,0 +1,3 @@
+set    1000000000, %l5
+set    1000000000L, %l5
+set    1000000000LL, %l5
index cba2d099bd4a7dd2e153da8bdfd0d24b7bf4253c..580656f6408e65bf69a95179e7776b61ff20ccdf 100644 (file)
@@ -101,6 +101,7 @@ if [istarget sparc*-*-*] {
     run_list_test "pr19910-2"
     run_dump_test "dcti-couples-v8"
     run_dump_test "dcti-couples-v9c"
+    run_dump_test "pr20732"
 }
 
 if [istarget sparc-*-vxworks*] {