From: rguenth Date: Mon, 6 Feb 2012 13:43:03 +0000 (+0000) Subject: 2012-02-06 Richard Guenther X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=316830acf1ae6073edbc97f3d18f93c1e0aadb1e;p=thirdparty%2Fgcc.git 2012-02-06 Richard Guenther PR tree-optimization/50955 * tree-ssa-loop-ivopts.c (get_computation_cost_at): Artificially raise cost of expressions that replace an address with an expression based on a different pointer. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183934 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7effee6db59d..97ceef1d05f7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2012-02-06 Richard Guenther + + PR tree-optimization/50955 + * tree-ssa-loop-ivopts.c (get_computation_cost_at): Artificially + raise cost of expressions that replace an address with an + expression based on a different pointer. + 2012-02-06 Jakub Jelinek PR target/52129 diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index 15a2dd7bc582..10c9352599ad 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -4048,7 +4048,11 @@ get_computation_cost_at (struct ivopts_data *data, return infinite_cost; } - if (address_p) + if (address_p + || (use->iv->base_object + && cand->iv->base_object + && POINTER_TYPE_P (TREE_TYPE (use->iv->base_object)) + && POINTER_TYPE_P (TREE_TYPE (cand->iv->base_object)))) { /* Do not try to express address of an object with computation based on address of a different object. This may cause problems in rtl