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] 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


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