aboutsummaryrefslogtreecommitdiff
path: root/gcc/varasm.c
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2004-11-19 13:12:38 +0000
committerPaul Brook <pbrook@gcc.gnu.org>2004-11-19 13:12:38 +0000
commitd31f36042826b28eecca017a36b971e4d45e8dee (patch)
tree62a658e9ae3ce3dedccc3292aef5ed146df5c59b /gcc/varasm.c
parentf4e5280b48245281bf49c197e307a38a8fc82705 (diff)
downloadgcc-d31f36042826b28eecca017a36b971e4d45e8dee.zip
gcc-d31f36042826b28eecca017a36b971e4d45e8dee.tar.gz
gcc-d31f36042826b28eecca017a36b971e4d45e8dee.tar.bz2
re PR target/17735 (make stops with "initializer for integer value is too complicated" while building an avr-cross compiler)
PR target/17735 * varasm.c (default_assemble_integer): Allow pointer-sized values. Expand comment. From-SVN: r90918
Diffstat (limited to 'gcc/varasm.c')
-rw-r--r--gcc/varasm.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 6019b5a..aaf9e53 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -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);
}