From: Jakub Jelinek Date: Fri, 9 Jan 2009 13:43:14 +0000 (+0100) Subject: re PR middle-end/38347 (gfortran.dg/alloc_comp_constructor_1.f90 ICE with -O2 -fdefau... X-Git-Tag: releases/gcc-4.4.0~959 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0a49e5c295b8d5bbafd3c7ecb543102f9ee4160a;p=thirdparty%2Fgcc.git re PR middle-end/38347 (gfortran.dg/alloc_comp_constructor_1.f90 ICE with -O2 -fdefault-integer-8) PR middle-end/38347 * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of GET_MODE (op0) in operand_subword_force calls. From-SVN: r143204 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3a9d0e1b6a45..3701476d8750 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2009-01-09 Jakub Jelinek + PR middle-end/38347 + * dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of + GET_MODE (op0) in operand_subword_force calls. + PR middle-end/38771 * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR, fold_convert arg0 operands to TREE_TYPE (op0) first. diff --git a/gcc/dojump.c b/gcc/dojump.c index 849f69f07cdf..060eb51e77e1 100644 --- a/gcc/dojump.c +++ b/gcc/dojump.c @@ -1,6 +1,6 @@ /* Convert tree expression to rtl instructions, for GNU compiler. Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GCC. @@ -675,10 +675,10 @@ do_jump_by_parts_zero_rtx (enum machine_mode mode, rtx op0, be slower, but that's highly unlikely. */ part = gen_reg_rtx (word_mode); - emit_move_insn (part, operand_subword_force (op0, 0, GET_MODE (op0))); + emit_move_insn (part, operand_subword_force (op0, 0, mode)); for (i = 1; i < nwords && part != 0; i++) part = expand_binop (word_mode, ior_optab, part, - operand_subword_force (op0, i, GET_MODE (op0)), + operand_subword_force (op0, i, mode), part, 1, OPTAB_WIDEN); if (part != 0) @@ -694,7 +694,7 @@ do_jump_by_parts_zero_rtx (enum machine_mode mode, rtx op0, drop_through_label = if_false_label = gen_label_rtx (); for (i = 0; i < nwords; i++) - do_compare_rtx_and_jump (operand_subword_force (op0, i, GET_MODE (op0)), + do_compare_rtx_and_jump (operand_subword_force (op0, i, mode), const0_rtx, EQ, 1, word_mode, NULL_RTX, if_false_label, NULL_RTX);