]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gcc: xtensa: fix fprintf format specifiers
authorMax Filippov <jcmvbkbc@gmail.com>
Wed, 31 May 2017 00:06:11 +0000 (00:06 +0000)
committerMax Filippov <jcmvbkbc@gcc.gnu.org>
Wed, 31 May 2017 00:06:11 +0000 (00:06 +0000)
HOST_WIDE_INT may not be long as assumed in print_operand and
xtensa_emit_call. Use HOST_WIDE_INT_PRINT_DEC/HOST_WIDE_INT_PRINT_HEX
format strings instead of %ld/0x%lx. This fixes incorrect assembly code
generation by the compiler running on armhf host.

2017-05-30  Max Filippov  <jcmvbkbc@gmail.com>
gcc/
Backport from mainline
2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>

* config/xtensa/xtensa.c (xtensa_emit_call): Use
HOST_WIDE_INT_PRINT_HEX instead of 0x%lx format string.
(print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of %ld
format string.

From-SVN: r248715

gcc/ChangeLog
gcc/config/xtensa/xtensa.c

index 24d38651fea2aeb05e5345e95d8a4bfac996161a..cae691d5eaf5b24d3f717f51e7b4955fbf710a23 100644 (file)
@@ -1,3 +1,13 @@
+2017-05-30  Max Filippov  <jcmvbkbc@gmail.com>
+
+       Backport from mainline
+       2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>
+
+       * config/xtensa/xtensa.c (xtensa_emit_call): Use
+       HOST_WIDE_INT_PRINT_HEX instead of 0x%lx format string.
+       (print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of %ld
+       format string.
+
 2017-05-30  Max Filippov  <jcmvbkbc@gmail.com>
 
        Backport from mainline
index 70f698aba0ae2635377e8dc2e62b1285d3370efc..2bdf5ccef979872670ebabf29eb7e75aeec92af0 100644 (file)
@@ -1776,7 +1776,8 @@ xtensa_emit_call (int callop, rtx *operands)
   rtx tgt = operands[callop];
 
   if (GET_CODE (tgt) == CONST_INT)
-    sprintf (result, "call%d\t0x%lx", WINDOW_SIZE, INTVAL (tgt));
+    sprintf (result, "call%d\t" HOST_WIDE_INT_PRINT_HEX,
+            WINDOW_SIZE, INTVAL (tgt));
   else if (register_operand (tgt, VOIDmode))
     sprintf (result, "callx%d\t%%%d", WINDOW_SIZE, callop);
   else
@@ -2347,14 +2348,14 @@ print_operand (FILE *file, rtx x, int letter)
 
     case 'L':
       if (GET_CODE (x) == CONST_INT)
-       fprintf (file, "%ld", (32 - INTVAL (x)) & 0x1f);
+       fprintf (file, HOST_WIDE_INT_PRINT_DEC, (32 - INTVAL (x)) & 0x1f);
       else
        output_operand_lossage ("invalid %%L value");
       break;
 
     case 'R':
       if (GET_CODE (x) == CONST_INT)
-       fprintf (file, "%ld", INTVAL (x) & 0x1f);
+       fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x) & 0x1f);
       else
        output_operand_lossage ("invalid %%R value");
       break;
@@ -2368,7 +2369,7 @@ print_operand (FILE *file, rtx x, int letter)
 
     case 'd':
       if (GET_CODE (x) == CONST_INT)
-       fprintf (file, "%ld", INTVAL (x));
+       fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x));
       else
        output_operand_lossage ("invalid %%d value");
       break;
@@ -2433,7 +2434,7 @@ print_operand (FILE *file, rtx x, int letter)
       else if (GET_CODE (x) == MEM)
        output_address (GET_MODE (x), XEXP (x, 0));
       else if (GET_CODE (x) == CONST_INT)
-       fprintf (file, "%ld", INTVAL (x));
+       fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (x));
       else
        output_addr_const (file, x);
     }