re PR tree-optimization/64728 (internal compiler error: SSA corruption)

2015-01-22  Richard Biener  <rguenther@suse.de>

	PR middle-end/64728
	* tree-ssa-coalesce.c (coalesce_partitions): Do not perform
	abnormal coalescing on undefined SSA names.

	* gcc.dg/torture/pr64728.c: New testcase.

From-SVN: r220003
This commit is contained in:
Richard Biener 2015-01-22 16:07:36 +00:00 committed by Richard Biener
parent 9832176855
commit f4b05e7468
4 changed files with 44 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2015-01-22 Richard Biener <rguenther@suse.de>
PR middle-end/64728
* tree-ssa-coalesce.c (coalesce_partitions): Do not perform
abnormal coalescing on undefined SSA names.
2015-22-01 Uros Bizjak <ubizjak@gmail.com>
PR target/64688

View File

@ -1,3 +1,8 @@
2015-01-22 Richard Biener <rguenther@suse.de>
PR middle-end/64728
* gcc.dg/torture/pr64728.c: New testcase.
2015-22-01 Uros Bizjak <ubizjak@gmail.com>
PR target/64688

View File

@ -0,0 +1,27 @@
/* { dg-do compile } */
#include <setjmp.h>
jmp_buf a;
int b, d;
void baz (long);
static void
bar (long *x)
{
if (d)
*x = b;
}
void
foo ()
{
baz (0);
if (setjmp (a))
{
long c;
bar (&c);
baz (c);
}
baz (0);
}

View File

@ -1213,8 +1213,13 @@ coalesce_partitions (var_map map, ssa_conflicts_p graph, coalesce_list_p cl,
gsi_next (&gsi))
{
gphi *phi = gsi.phi ();
tree arg = PHI_ARG_DEF (phi, e->dest_idx);
if (SSA_NAME_IS_DEFAULT_DEF (arg)
&& (!SSA_NAME_VAR (arg)
|| TREE_CODE (SSA_NAME_VAR (arg)) != PARM_DECL))
continue;
tree res = PHI_RESULT (phi);
tree arg = PHI_ARG_DEF (phi, e->dest_idx);
int v1 = SSA_NAME_VERSION (res);
int v2 = SSA_NAME_VERSION (arg);