Commit 740bb6ad by Richard Guenther Committed by Richard Biener

re PR tree-optimization/41654 (ICE: in gimple_cond_get_ops_from_tree, at gimple.c:417)

2009-10-10  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/41654
	* tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
	a cond expr before calling gimple_cond_set_condition_from_tree.
	(ifcombine_iforif): Likewise.

	* gfortran.fortran-torture/compile/pr41654.f90: New testcase.

From-SVN: r152620
parent fdfea49e
2009-10-10 Richard Guenther <rguenther@suse.de>
PR tree-optimization/41654
* tree-ssa-ifcombine.c (ifcombine_ifandif): Properly canonicalize
a cond expr before calling gimple_cond_set_condition_from_tree.
(ifcombine_iforif): Likewise.
2009-10-09 Ian Lance Taylor <iant@google.com>
* configure.ac: Use AC_SEARCH_LIBS to find dlopen.
2009-10-10 Richard Guenther <rguenther@suse.de>
PR tree-optimization/41654
* gfortran.fortran-torture/compile/pr41654.f90: New testcase.
2009-10-09 Jason Merrill <jason@redhat.com>
* g++.dg/cpp/ucn-1.C: New.
......
SUBROUTINE SCANBUFR (LBUFRIGNOREERROR, LBOPRPRO, LLSPLIT)
LOGICAL :: LBUFRIGNOREERROR, LBOPRPRO, LLSPLIT
INTEGER :: IBOTYP, IBSTYP
IF ((IBOTYP.eq.0).AND.(IBSTYP.eq.1)) GO TO 251
IF ((IBOTYP.eq.0).AND.(IBSTYP.eq.3)) GO TO 251
IF(LBUFRIGNOREERROR) THEN
goto 360
ENDIF
251 CONTINUE
IF(LBOPRPRO.AND.LLSPLIT) THEN
CALL OBSCREEN
ENDIF
360 CONTINUE
END SUBROUTINE SCANBUFR
......@@ -340,6 +340,9 @@ ifcombine_ifandif (basic_block inner_cond_bb, basic_block outer_cond_bb)
t2 = force_gimple_operand_gsi (&gsi, t2, true, NULL_TREE,
true, GSI_SAME_STMT);
t = fold_build2 (EQ_EXPR, boolean_type_node, t2, t);
t = canonicalize_cond_expr_cond (t);
if (!t)
return false;
gimple_cond_set_condition_from_tree (inner_cond, t);
update_stmt (inner_cond);
......@@ -488,6 +491,9 @@ ifcombine_iforif (basic_block inner_cond_bb, basic_block outer_cond_bb)
true, GSI_SAME_STMT);
t = fold_build2 (NE_EXPR, boolean_type_node, t,
build_int_cst (TREE_TYPE (t), 0));
t = canonicalize_cond_expr_cond (t);
if (!t)
return false;
gimple_cond_set_condition_from_tree (inner_cond, t);
update_stmt (inner_cond);
......
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