mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-26 09:50:40 +08:00
ipa-inline-analysis.c (eliminated_by_inlining_prob): Handle &this->field expressions.
* ipa-inline-analysis.c (eliminated_by_inlining_prob): Handle &this->field expressions. From-SVN: r192899
This commit is contained in:
parent
1d5d667b3b
commit
a7dbc1cbe5
@ -1,3 +1,8 @@
|
||||
2012-10-28 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* ipa-inline-analysis.c (eliminated_by_inlining_prob): Handle
|
||||
&this->field expressions.
|
||||
|
||||
2012-10-28 Vladimir Makarov <vmakarov@redhat.com>
|
||||
|
||||
* rtl.h (struct rtx_def): Add a comment for member unchanging.
|
||||
|
@ -1567,6 +1567,7 @@ eliminated_by_inlining_prob (gimple stmt)
|
||||
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
|
||||
|| gimple_assign_rhs_class (stmt) == GIMPLE_SINGLE_RHS)
|
||||
{
|
||||
tree rhs = gimple_assign_rhs1 (stmt);
|
||||
@ -1584,6 +1585,20 @@ eliminated_by_inlining_prob (gimple stmt)
|
||||
/* Reads of parameter are expected to be free. */
|
||||
if (unmodified_parm (stmt, inner_rhs))
|
||||
rhs_free = true;
|
||||
/* Match expressions of form &this->field. Those will most likely
|
||||
combine with something upstream after inlining. */
|
||||
else if (TREE_CODE (inner_rhs) == ADDR_EXPR)
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
/* When parameter is not SSA register because its address is taken
|
||||
and it is just copied into one, the statement will be completely
|
||||
|
Loading…
x
Reference in New Issue
Block a user