re PR target/17735 (make stops with "initializer for integer value is too complicated...
authorPaul Brook <paul@codesourcery.com>
Fri, 19 Nov 2004 13:12:38 +0000 (13:12 +0000)
committerPaul Brook <pbrook@gcc.gnu.org>
Fri, 19 Nov 2004 13:12:38 +0000 (13:12 +0000)
PR target/17735
* varasm.c (default_assemble_integer): Allow pointer-sized values.
Expand comment.

From-SVN: r90918

gcc/ChangeLog
gcc/varasm.c

index aef41d6..93484e0 100644 (file)
@@ -1,3 +1,9 @@
+2004-11-19  Paul Brook  <paul@codesourcery.com>
+
+       PR target/17735
+       * varasm.c (default_assemble_integer): Allow pointer-sized values.
+       Expand comment.
+
 2004-11-19  Nick Clifton  <nickc@redhat.com>
 
        * config/stormy16/stormy16.c (combine_bnp): Add code to handle
index 6019b5a..aaf9e53 100644 (file)
@@ -2026,8 +2026,9 @@ default_assemble_integer (rtx x ATTRIBUTE_UNUSED,
                          int aligned_p ATTRIBUTE_UNUSED)
 {
   const char *op = integer_asm_op (size, aligned_p);
-  /* Avoid GAS bugs for values > word size.  */
-  if (size > UNITS_PER_WORD)
+  /* Avoid GAS bugs for large values.  Specifically negative values whose
+     absolute value fits in a bfd_vma, but not in a bfd_signed_vma.  */
+  if (size > UNITS_PER_WORD && size > POINTER_SIZE / BITS_PER_UNIT)
     return false;
   return op && (assemble_integer_with_op (op, x), true);
 }