From d31f36042826b28eecca017a36b971e4d45e8dee Mon Sep 17 00:00:00 2001 From: Paul Brook Date: Fri, 19 Nov 2004 13:12:38 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/varasm.c | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index aef41d64e49..93484e0dbae 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-11-19 Paul Brook + + PR target/17735 + * varasm.c (default_assemble_integer): Allow pointer-sized values. + Expand comment. + 2004-11-19 Nick Clifton * config/stormy16/stormy16.c (combine_bnp): Add code to handle diff --git a/gcc/varasm.c b/gcc/varasm.c index 6019b5a7e06..aaf9e53b22c 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); } -- 2.30.2