Commit 0a49e5c2 by Jakub Jelinek Committed by Jakub Jelinek

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
parent 060481a0
2009-01-09 Jakub Jelinek <jakub@redhat.com> 2009-01-09 Jakub Jelinek <jakub@redhat.com>
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 PR middle-end/38771
* fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR, * fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
fold_convert arg0 operands to TREE_TYPE (op0) first. fold_convert arg0 operands to TREE_TYPE (op0) first.
......
/* Convert tree expression to rtl instructions, for GNU compiler. /* Convert tree expression to rtl instructions, for GNU compiler.
Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 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. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -675,10 +675,10 @@ do_jump_by_parts_zero_rtx (enum machine_mode mode, rtx op0, ...@@ -675,10 +675,10 @@ do_jump_by_parts_zero_rtx (enum machine_mode mode, rtx op0,
be slower, but that's highly unlikely. */ be slower, but that's highly unlikely. */
part = gen_reg_rtx (word_mode); 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++) for (i = 1; i < nwords && part != 0; i++)
part = expand_binop (word_mode, ior_optab, part, 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); part, 1, OPTAB_WIDEN);
if (part != 0) if (part != 0)
...@@ -694,7 +694,7 @@ do_jump_by_parts_zero_rtx (enum machine_mode mode, rtx op0, ...@@ -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 (); drop_through_label = if_false_label = gen_label_rtx ();
for (i = 0; i < nwords; i++) 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, const0_rtx, EQ, 1, word_mode, NULL_RTX,
if_false_label, NULL_RTX); if_false_label, NULL_RTX);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment