Commit 93d15c33 by Jakub Jelinek Committed by Jakub Jelinek

re PR tree-optimization/34140 (ICE in is_hidden_global_store, at tree-ssa-sink.c:207)

	PR tree-optimization/34140
	* tree-if-conv.c (if_convertible_phi_p): Fail if BB other than
	loop->header has virtual phi nodes.

	* gcc.c-torture/compile/20071128-1.c: New test.

From-SVN: r130494
parent eae645b6
2007-11-28 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/34140
* tree-if-conv.c (if_convertible_phi_p): Fail if BB other than
loop->header has virtual phi nodes.
2007-11-28 Richard Sandiford <rsandifo@nildram.co.uk>
PR target/32406
2007-11-28 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/34140
* gcc.c-torture/compile/20071128-1.c: New test.
2007-11-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/32928
/* PR tree-optimization/34140 */
/* Testcase by Martin Michlmayr <tbm@cyrius.com> */
struct S
{
unsigned int s;
};
struct T
{
struct S t[2];
unsigned int u : 1;
};
void
foo (int x, int y, int z)
{
int i;
struct T t;
t.u = t.u;
for (i = 0; i < x; i++)
if (z != 1)
t.t[i].s = y || t.u;
}
......@@ -302,7 +302,8 @@ tree_if_convert_cond_expr (struct loop *loop, tree stmt, tree cond,
and it belongs to basic block BB.
PHI is not if-convertible
- if it has more than 2 arguments.
- Virtual PHI is immediately used in another PHI node. */
- Virtual PHI is immediately used in another PHI node.
- Virtual PHI on BB other than header. */
static bool
if_convertible_phi_p (struct loop *loop, basic_block bb, tree phi)
......@@ -324,6 +325,13 @@ if_convertible_phi_p (struct loop *loop, basic_block bb, tree phi)
{
imm_use_iterator imm_iter;
use_operand_p use_p;
if (bb != loop->header)
{
if (dump_file && (dump_flags & TDF_DETAILS))
fprintf (dump_file, "Virtual phi not on loop header.\n");
return false;
}
FOR_EACH_IMM_USE_FAST (use_p, imm_iter, PHI_RESULT (phi))
{
if (TREE_CODE (USE_STMT (use_p)) == PHI_NODE)
......
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