From 1d30a09a480a436248a9f86c933e8b9c71cc0b46 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Mon, 6 Feb 2012 13:43:03 +0000 Subject: [PATCH] re PR tree-optimization/50955 (IVopts incorrectly rewrite the address of a global memory access into a local form.) 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. From-SVN: r183934 --- gcc/ChangeLog | 7 +++++++ gcc/tree-ssa-loop-ivopts.c | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7effee6..97ceef1 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 15a2dd7..10c9352 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 -- 2.7.4