aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2011-09-21 15:10:31 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2011-09-21 13:10:31 +0000
commit116b9c0785184300549dff91bd111f677aea21fe (patch)
tree533bacc29cc3834c0fb7e1cc1f40da732fb9d038
parentbdbebb7dc6192e428fa9c5ece8de8efb33a7738f (diff)
downloadgcc-116b9c0785184300549dff91bd111f677aea21fe.zip
gcc-116b9c0785184300549dff91bd111f677aea21fe.tar.gz
gcc-116b9c0785184300549dff91bd111f677aea21fe.tar.bz2
re PR tree-optimization/50433 (ACATS c460010 fails to compile)
PR tree-optimization/50433 * ipa-inline-analysis.c (eliminated_by_inlining_prob): Use get_base_address. From-SVN: r179046
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ipa-inline-analysis.c15
2 files changed, 11 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fb80dc9..0f4aa86 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2011-09-21 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/50433
+ * ipa-inline-analysis.c (eliminated_by_inlining_prob): Use get_base_address.
+
2011-09-21 Jakub Jelinek <jakub@redhat.com>
* config/i386/sse.md (<code><mode>3 smaxmin:VI124_128 expander): Use
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index 6bc96c7..fc954b3 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -1149,18 +1149,15 @@ eliminated_by_inlining_prob (gimple stmt)
{
tree rhs = gimple_assign_rhs1 (stmt);
tree lhs = gimple_assign_lhs (stmt);
- tree inner_rhs = rhs;
- tree inner_lhs = lhs;
+ tree inner_rhs = get_base_address (rhs);
+ tree inner_lhs = get_base_address (lhs);
bool rhs_free = false;
bool lhs_free = false;
- while (handled_component_p (inner_lhs)
- || TREE_CODE (inner_lhs) == MEM_REF)
- inner_lhs = TREE_OPERAND (inner_lhs, 0);
- while (handled_component_p (inner_rhs)
- || TREE_CODE (inner_rhs) == ADDR_EXPR
- || TREE_CODE (inner_rhs) == MEM_REF)
- inner_rhs = TREE_OPERAND (inner_rhs, 0);
+ if (!inner_rhs)
+ inner_rhs = rhs;
+ if (!inner_lhs)
+ inner_lhs = lhs;
if (unmodified_parm (stmt, inner_rhs))
rhs_free = true;