aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-cp.c
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2013-02-20 13:56:30 +0100
committerMartin Jambor <jamborm@gcc.gnu.org>2013-02-20 13:56:30 +0100
commitec9c9d1b988928151b3f14ee06a95e0ef550dcc7 (patch)
tree7778c60b5be761dc845a758ecd9c207b6166f0a2 /gcc/ipa-cp.c
parente91c8ed63fa4d372a740ca8047bf42c0b86593c4 (diff)
downloadgcc-ec9c9d1b988928151b3f14ee06a95e0ef550dcc7.zip
gcc-ec9c9d1b988928151b3f14ee06a95e0ef550dcc7.tar.gz
gcc-ec9c9d1b988928151b3f14ee06a95e0ef550dcc7.tar.bz2
re PR tree-optimization/55334 (mgrid regression (ipa-cp disables vectorization))
2013-02-20 Martin Jambor <mjambor@suse.cz> PR tree-optimization/55334 * ipa-cp.c (initialize_node_lattices): Disable IPA-CP through and to restricted pointers to arrays. From-SVN: r196171
Diffstat (limited to 'gcc/ipa-cp.c')
-rw-r--r--gcc/ipa-cp.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 6feb6b6..c79f277 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -730,6 +730,22 @@ initialize_node_lattices (struct cgraph_node *node)
cgraph_node_name (node), node->uid,
disable ? "BOTTOM" : "VARIABLE");
}
+ if (!disable)
+ for (i = 0; i < ipa_get_param_count (info) ; i++)
+ {
+ struct ipcp_param_lattices *plats = ipa_get_parm_lattices (info, i);
+ tree t = TREE_TYPE (ipa_get_param(info, i));
+
+ if (POINTER_TYPE_P (t) && TYPE_RESTRICT (t)
+ && TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE)
+ {
+ set_lattice_to_bottom (&plats->itself);
+ if (dump_file && (dump_flags & TDF_DETAILS)
+ && !node->alias && !node->thunk.thunk_p)
+ fprintf (dump_file, "Going to ignore param %i of of %s/%i.\n",
+ i, cgraph_node_name (node), node->uid);
+ }
+ }
for (ie = node->indirect_calls; ie; ie = ie->next_callee)
if (ie->indirect_info->polymorphic)