re PR tree-optimization/39202 (internal compiler error: in collapse_rest_of_var, at tree-ssa-structalias.c:3296)

2009-02-17  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/39202
	* tree-ssa-structalias.c (do_structure_copy): Before collapsing
	a var make sure to follow existing collapses.

	* gcc.c-torture/compile/pr39202.c: New testcase.

From-SVN: r144235
This commit is contained in:
Richard Guenther 2009-02-17 16:01:53 +00:00 committed by Richard Biener
parent 91ab2c868e
commit 6b24ee26e5
4 changed files with 46 additions and 2 deletions

View file

@ -1,3 +1,9 @@
2009-02-17 Richard Guenther <rguenther@suse.de>
PR tree-optimization/39202
* tree-ssa-structalias.c (do_structure_copy): Before collapsing
a var make sure to follow existing collapses.
2009-02-17 Richard Guenther <rguenther@suse.de>
PR middle-end/39214

View file

@ -1,3 +1,8 @@
2009-02-17 Richard Guenther <rguenther@suse.de>
PR tree-optimization/39202
* gcc.c-torture/compile/pr39202.c: New testcase.
2009-02-17 Richard Guenther <rguenther@suse.de>
PR tree-optimization/39204

View file

@ -0,0 +1,33 @@
typedef struct
{
union
{
int * aaa;
} u;
} t_a;
typedef struct
{
unsigned bbb : 1;
} t_b;
typedef struct
{
int ccc;
t_a ddd;
t_b eee;
int fff;
} t_c;
typedef struct t_d
{
t_c f1;
t_c f2;
} t_d;
void foo (void)
{
t_d ggg;
ggg.f1 = ggg.f2;
}

View file

@ -3405,8 +3405,8 @@ do_structure_copy (tree lhsop, tree rhsop)
{
if (!do_simple_structure_copy (lhs, rhs, MIN (lhssize, rhssize)))
{
lhs.var = collapse_rest_of_var (lhs.var);
rhs.var = collapse_rest_of_var (rhs.var);
lhs.var = collapse_rest_of_var (get_varinfo_fc (lhs.var)->id);
rhs.var = collapse_rest_of_var (get_varinfo_fc (rhs.var)->id);
lhs.offset = 0;
rhs.offset = 0;
lhs.type = SCALAR;