This patch changes the format used to print fixed-point constants from
hex to decimal. For instance a negative "short fract" fixed-point
constant may be represented as a signed HOST_WIDE_INT from -1 to -128,
which would currently be printed as e.g. 0xfff....ffxx, resulting in a
"bignum truncated to fit" warning from the assembler. This trouble is
avoided if we just print using integers instead, similarly to the way
signed character-constants are emitted elsewhere in the compiler.

Tested along with the rest of the patch series. OK to apply?

Julian

ChangeLog

    * final.c (output_addr_const): Print fixed-point constants as
    decimal not hex (avoiding an assembler overflow warning for
    negative byte constants).
commit 7c169485b6e5b153af02c83e8b858b8613ed7664
Author: Julian Brown <jul...@henry8.codesourcery.com>
Date:   Fri May 13 05:44:19 2011 -0700

    Tweak fixed-point constant format.

diff --git a/gcc/final.c b/gcc/final.c
index 7e1ae90..b147ddf 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -3633,8 +3633,7 @@ output_addr_const (FILE *file, rtx x)
       break;
 
     case CONST_FIXED:
-      fprintf (file, HOST_WIDE_INT_PRINT_HEX,
-	       (unsigned HOST_WIDE_INT) CONST_FIXED_VALUE_LOW (x));
+      fprintf (file, HOST_WIDE_INT_PRINT_DEC, CONST_FIXED_VALUE_LOW (x));
       break;
 
     case PLUS:

Reply via email to