mirror of git://gcc.gnu.org/git/gcc.git
re PR tree-optimization/49493 (ICE: in insert_vi_for_tree, at tree-ssa-structalias.c:2637 with -O -fipa-pta)
2011-06-22 Richard Guenther <rguenther@suse.de> PR tree-optimization/49493 * tree-ssa-structalias.c (get_constraint_for_ssa_var): Refer to the alias target of variables. (associate_varinfo_to_alias_1): Remove. (ipa_pta_execute): Do not associate aliases with anything. * cgraph.h (varpool_alias_aliased_node): Fix cut&paste errors. (cgraph_function_node): Likewise. (cgraph_function_or_thunk_node): Likewise. (varpool_variable_node): Likewise. * gcc.dg/ipa/ipa-pta-17.c: New testcase. From-SVN: r175300
This commit is contained in:
parent
7b902b811b
commit
9c7c9f10c3
|
@ -1,3 +1,15 @@
|
||||||
|
2011-06-22 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/49493
|
||||||
|
* tree-ssa-structalias.c (get_constraint_for_ssa_var):
|
||||||
|
Refer to the alias target of variables.
|
||||||
|
(associate_varinfo_to_alias_1): Remove.
|
||||||
|
(ipa_pta_execute): Do not associate aliases with anything.
|
||||||
|
* cgraph.h (varpool_alias_aliased_node): Fix cut&paste errors.
|
||||||
|
(cgraph_function_node): Likewise.
|
||||||
|
(cgraph_function_or_thunk_node): Likewise.
|
||||||
|
(varpool_variable_node): Likewise.
|
||||||
|
|
||||||
2011-06-22 Nathan Sidwell <nathan@codesourcery.com>
|
2011-06-22 Nathan Sidwell <nathan@codesourcery.com>
|
||||||
|
|
||||||
* config/arm/arm.h (OPTION_DEFAULT_SPECS): Fix -mtls-dialect
|
* config/arm/arm.h (OPTION_DEFAULT_SPECS): Fix -mtls-dialect
|
||||||
|
|
|
@ -981,7 +981,7 @@ varpool_alias_aliased_node (struct varpool_node *n)
|
||||||
|
|
||||||
ipa_ref_list_reference_iterate (&n->ref_list, 0, ref);
|
ipa_ref_list_reference_iterate (&n->ref_list, 0, ref);
|
||||||
gcc_checking_assert (ref->use == IPA_REF_ALIAS);
|
gcc_checking_assert (ref->use == IPA_REF_ALIAS);
|
||||||
if (ref->refered_type == IPA_REF_CGRAPH)
|
if (ref->refered_type == IPA_REF_VARPOOL)
|
||||||
return ipa_ref_varpool_node (ref);
|
return ipa_ref_varpool_node (ref);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1011,7 +1011,7 @@ cgraph_function_node (struct cgraph_node *node, enum availability *availability)
|
||||||
*availability = a;
|
*availability = a;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (*availability)
|
if (availability)
|
||||||
*availability = AVAIL_NOT_AVAILABLE;
|
*availability = AVAIL_NOT_AVAILABLE;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1039,7 +1039,7 @@ cgraph_function_or_thunk_node (struct cgraph_node *node, enum availability *avai
|
||||||
*availability = a;
|
*availability = a;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (*availability)
|
if (availability)
|
||||||
*availability = AVAIL_NOT_AVAILABLE;
|
*availability = AVAIL_NOT_AVAILABLE;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1067,7 +1067,7 @@ varpool_variable_node (struct varpool_node *node, enum availability *availabilit
|
||||||
*availability = a;
|
*availability = a;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (*availability)
|
if (availability)
|
||||||
*availability = AVAIL_NOT_AVAILABLE;
|
*availability = AVAIL_NOT_AVAILABLE;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2011-06-22 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/49493
|
||||||
|
* gcc.dg/ipa/ipa-pta-17.c: New testcase.
|
||||||
|
|
||||||
2011-06-22 Jason Merrill <jason@redhat.com>
|
2011-06-22 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
PR c++/49260
|
PR c++/49260
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-O -fipa-pta" } */
|
||||||
|
|
||||||
|
static int i;
|
||||||
|
extern int j __attribute__ ((alias ("i")));
|
||||||
|
int *p = &j;
|
|
@ -2746,6 +2746,18 @@ get_constraint_for_ssa_var (tree t, VEC(ce_s, heap) **results, bool address_p)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* For global variables resort to the alias target. */
|
||||||
|
if (TREE_CODE (t) == VAR_DECL
|
||||||
|
&& (TREE_STATIC (t) || DECL_EXTERNAL (t)))
|
||||||
|
{
|
||||||
|
struct varpool_node *node = varpool_get_node (t);
|
||||||
|
if (node && node->alias)
|
||||||
|
{
|
||||||
|
node = varpool_variable_node (node, NULL);
|
||||||
|
t = node->decl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
vi = get_vi_for_tree (t);
|
vi = get_vi_for_tree (t);
|
||||||
cexpr.var = vi->id;
|
cexpr.var = vi->id;
|
||||||
cexpr.type = SCALAR;
|
cexpr.type = SCALAR;
|
||||||
|
@ -6703,16 +6715,6 @@ associate_varinfo_to_alias (struct cgraph_node *node, void *data)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Associate node with varinfo DATA. Worker for
|
|
||||||
varpool_for_node_and_aliases. */
|
|
||||||
static bool
|
|
||||||
associate_varinfo_to_alias_1 (struct varpool_node *node, void *data)
|
|
||||||
{
|
|
||||||
if (node->alias)
|
|
||||||
insert_vi_for_tree (node->decl, (varinfo_t)data);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Execute the driver for IPA PTA. */
|
/* Execute the driver for IPA PTA. */
|
||||||
static unsigned int
|
static unsigned int
|
||||||
ipa_pta_execute (void)
|
ipa_pta_execute (void)
|
||||||
|
@ -6744,12 +6746,10 @@ ipa_pta_execute (void)
|
||||||
/* Create constraints for global variables and their initializers. */
|
/* Create constraints for global variables and their initializers. */
|
||||||
for (var = varpool_nodes; var; var = var->next)
|
for (var = varpool_nodes; var; var = var->next)
|
||||||
{
|
{
|
||||||
varinfo_t vi;
|
|
||||||
if (var->alias)
|
if (var->alias)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
vi = get_vi_for_tree (var->decl);
|
get_vi_for_tree (var->decl);
|
||||||
varpool_for_node_and_aliases (var, associate_varinfo_to_alias_1, vi, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dump_file)
|
if (dump_file)
|
||||||
|
|
Loading…
Reference in New Issue