From: Richard Guenther Date: Thu, 17 Dec 2009 14:36:43 +0000 (+0000) Subject: re PR middle-end/42397 (FAIL: gfortran.dg/lto/20091028-2 f_lto_20091028-2_0.o-f_lto_2... X-Git-Tag: releases/gcc-4.5.0~1595 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e100f3957c29bce0641f05864f5378ba4e041ced;p=thirdparty%2Fgcc.git re PR middle-end/42397 (FAIL: gfortran.dg/lto/20091028-2 f_lto_20091028-2_0.o-f_lto_20091028-2_1.o link, internal compiler error) 2009-12-17 Richard Guenther PR middle-end/42397 * builtins.c (get_object_alignment): Properly deal with a CONST_DECL base. * expr.c (emit_block_move_hints): Assert the alignment makes sense. From-SVN: r155316 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 47731da822d4..fe0de91dbcac 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2009-12-17 Richard Guenther + + PR middle-end/42397 + * builtins.c (get_object_alignment): Properly deal with + a CONST_DECL base. + * expr.c (emit_block_move_hints): Assert the alignment makes + sense. + 2009-12-17 Uros Bizjak PR target/32280 diff --git a/gcc/builtins.c b/gcc/builtins.c index 75a7e10ea6da..53d74a25b17e 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -323,6 +323,8 @@ get_object_alignment (tree exp, unsigned int align, unsigned int max_align) offset = next_offset; } } + if (TREE_CODE (exp) == CONST_DECL) + exp = DECL_INITIAL (exp); if (DECL_P (exp)) align = MIN (inner, DECL_ALIGN (exp)); #ifdef CONSTANT_ALIGNMENT diff --git a/gcc/expr.c b/gcc/expr.c index 13ae5fffc9f0..d1cd815dd9be 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -1194,6 +1194,7 @@ emit_block_move_hints (rtx x, rtx y, rtx size, enum block_op_methods method, } align = MIN (MEM_ALIGN (x), MEM_ALIGN (y)); + gcc_assert (align >= BITS_PER_UNIT); gcc_assert (MEM_P (x)); gcc_assert (MEM_P (y));