This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Speed-up use-after-scope (re-writing to SSA) (version 2)
On 01/23/2017 10:38 AM, Jakub Jelinek wrote:
> On Mon, Jan 23, 2017 at 10:19:33AM +0100, Martin Liška wrote:
>> diff --git a/gcc/gimplify.c b/gcc/gimplify.c
>> index 2777a23eb93..1b076fdf45c 100644
>> --- a/gcc/gimplify.c
>> +++ b/gcc/gimplify.c
>> @@ -1206,8 +1206,19 @@ asan_poison_variables (hash_set<tree> *variables, bool poison, gimple_seq *seq_p
>>
>> sorted_variables.qsort (sort_by_decl_uid);
>>
>> - for (unsigned i = 0; i < sorted_variables.length (); i++)
>> - asan_poison_variable (sorted_variables[i], poison, seq_p);
>> + unsigned i;
>> + tree var;
>> + FOR_EACH_VEC_ELT (sorted_variables, i, var)
>> + {
>> + asan_poison_variable (var, poison, seq_p);
>> +
>> + /* Add use_after_scope_memory attribute for the variable in order
>> + to prevent re-written into SSA. */
>> + DECL_ATTRIBUTES (var)
>> + = tree_cons (get_identifier ("use_after_scope_memory"),
>
> Please use "use after scope memory" to make it clear it is internal
> only attribute users can't specify.
> Also, can't asan_poison_variables be performed on the same var
> multiple times (multiple labels, or switches, ...)?
> If yes, then the addition of the attribute should be guarded
> with if (!lookup_attribute ("use after scope memory", DECL_ATTRIBUTES (vars)))
> so that you don't add the attributes many times.
>
>> + build_int_cst (integer_type_node, 1),
>> + DECL_ATTRIBUTES (var));
>
> Please use:
> integer_one_node, DECL_ATTRIBUTES (var));
> instead.
>
>> --- a/gcc/tree-ssa.c
>> +++ b/gcc/tree-ssa.c
>> @@ -1565,6 +1565,10 @@ is_asan_mark_p (gimple *stmt)
>> && VAR_P (TREE_OPERAND (addr, 0)))
>> {
>> tree var = TREE_OPERAND (addr, 0);
>> + if (lookup_attribute ("use_after_scope_memory",
>> + DECL_ATTRIBUTES (var)))
>> + return false;
>
> See above.
>
> Patchset is ok for trunk with these nits fixed, thanks.
>
> Jakub
>
Great, installed as r244791 and r244793. One more time, really thank
you for help, it took some time to finalize the optimization.
Martin