This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Modify TER to not propagate expressions across call


On Tue, Oct 19, 2010 at 12:16 AM, Pat Haugen
<pthaugen@linux.vnet.ibm.com> wrote:
> ?On 10/18/2010 4:33 AM, Richard Guenther wrote:
>>
>>> The NOT operation used to be propagated into the AND operation; it isn't
>>> any
>>> more after the patch. ?Now this propagation was a complete win: an SSA
>>> name
>>> was eliminated and lifetimes didn't change globally.
>>>
>>> Could the patch be tweaked so as to fix the pessimization this case?
>>
>> We could allow the TER if the operation just has a single operand as
>> that doesn't pessimize register allocation across calls
>
> The following appears to work, if it's the right approach I can
> bootstrap/regtest.

Yes, that looks good.  Please fix formatting problems while you
are there (|| and && go on the next line, watch long lines).

Thanks,
Richard.

> Index: tree-ssa-ter.c
> ===================================================================
> --- tree-ssa-ter.c ? ? ?(revision 165656)
> +++ tree-ssa-ter.c ? ? ?(working copy)
> @@ -645,7 +645,8 @@ find_replaceable_in_bb (temp_expr_table_
> ? ? ? ? ? ? ? ? substitution list, or the def and use span a call such that
> ? ? ? ? ? ? ? ? we'll expand lifetimes across a call. ?*/
> ? ? ? ? ? ? ?if (gimple_has_volatile_ops (stmt) || same_root_var ||
> - ? ? ? ? ? ? ? ? tab->call_cnt[ver] != cur_call_cnt)
> + ? ? ? ? ? ? ? ? (tab->call_cnt[ver] != cur_call_cnt &&
> + ? ? ? ? ? ? ? ? ?SINGLE_SSA_USE_OPERAND (SSA_NAME_DEF_STMT (use),
> SSA_OP_USE) == NULL_USE_OPERAND_P))
> ? ? ? ? ? ? ? ?finished_with_expr (tab, ver, true);
> ? ? ? ? ? ? ?else
> ? ? ? ? ? ? ? ?mark_replaceable (tab, use, stmt_replaceable);
>
>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]