aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2012-10-30 17:51:12 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2012-10-30 16:51:12 +0000
commit63cf72605a8365bb2fb5f27a0ea6121c74d32ac7 (patch)
tree6c4362f693319e55f9260978be0a1bcb1af32e73 /gcc
parente152d14c2f42038d518c985eb3f4a830323791b3 (diff)
downloadgcc-63cf72605a8365bb2fb5f27a0ea6121c74d32ac7.zip
gcc-63cf72605a8365bb2fb5f27a0ea6121c74d32ac7.tar.gz
gcc-63cf72605a8365bb2fb5f27a0ea6121c74d32ac7.tar.bz2
* ipa-inline-analysis.c (eliminated_by_inlining_prob): Cleanup.
From-SVN: r192991
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/ipa-inline-analysis.c20
2 files changed, 14 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e39f2ad..e7e3ec3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2012-10-30 Jan Hubicka <jh@suse.cz>
+ * ipa-inline-analysis.c (eliminated_by_inlining_prob): Cleanup.
+
+2012-10-30 Jan Hubicka <jh@suse.cz>
+
* tree-ssa-loop-niter.c (number_of_iterations_exit): New parameter
EVERY_ITERATION with implicit value of true.
(record_estimate): Check dominance relationship of the basic block
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index a8d16a8..8baaced 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -1548,6 +1548,7 @@ static int
eliminated_by_inlining_prob (gimple stmt)
{
enum gimple_code code = gimple_code (stmt);
+ enum tree_code rhs_code;
if (!optimize)
return 0;
@@ -1560,14 +1561,16 @@ eliminated_by_inlining_prob (gimple stmt)
if (gimple_num_ops (stmt) != 2)
return 0;
+ rhs_code = gimple_assign_rhs_code (stmt);
+
/* Casts of parameters, loads from parameters passed by reference
and stores to return value or parameters are often free after
inlining dua to SRA and further combining.
Assume that half of statements goes away. */
- if (gimple_assign_rhs_code (stmt) == CONVERT_EXPR
- || gimple_assign_rhs_code (stmt) == NOP_EXPR
- || gimple_assign_rhs_code (stmt) == VIEW_CONVERT_EXPR
- || gimple_assign_rhs_code (stmt) == ADDR_EXPR
+ if (rhs_code == CONVERT_EXPR
+ || rhs_code == NOP_EXPR
+ || rhs_code == VIEW_CONVERT_EXPR
+ || rhs_code == ADDR_EXPR
|| gimple_assign_rhs_class (stmt) == GIMPLE_SINGLE_RHS)
{
tree rhs = gimple_assign_rhs1 (stmt);
@@ -1592,12 +1595,9 @@ eliminated_by_inlining_prob (gimple stmt)
tree op = get_base_address (TREE_OPERAND (inner_rhs, 0));
if (TREE_CODE (op) == PARM_DECL)
rhs_free = true;
- else if (TREE_CODE (op) == MEM_REF)
- {
- op = get_base_address (TREE_OPERAND (op, 0));
- if (unmodified_parm (stmt, op))
- rhs_free = true;
- }
+ else if (TREE_CODE (op) == MEM_REF
+ && unmodified_parm (stmt, TREE_OPERAND (op, 0)))
+ rhs_free = true;
}
/* When parameter is not SSA register because its address is taken