[PATCH 1/3] gimple-fold: Transform stp*cpy_chk to str*cpy directly

Siddhesh Poyarekar siddhesh@gotplt.org
Sun Nov 14 05:48:44 GMT 2021


On 11/12/21 22:46, Prathamesh Kulkarni wrote:
> On Fri, 12 Nov 2021 at 01:12, Siddhesh Poyarekar <siddhesh@gotplt.org> wrote:
>>
>> Avoid going through another folding cycle and use the ignore flag to
>> directly transform BUILT_IN_STPCPY_CHK to BUILT_IN_STRCPY when set,
>> likewise for BUILT_IN_STPNCPY_CHK to BUILT_IN_STPNCPY.
>>
>> Dump the transformation in dump_file so that we can verify in tests that
>> the direct transformation actually happened.
>>
>> gcc/ChangeLog:
>>
>>          * gimple-fold.c (gimple_fold_builtin_stxcpy_chk,
>>          gimple_fold_builtin_stxncpy_chk): Use BUILT_IN_STRNCPY if return
>>          value is not used.
>>
>> gcc/testsuite/ChangeLog:
>>
>>          * gcc.dg/fold-stringops.c: New test.
>>
>> Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>
>> ---
>>   gcc/gimple-fold.c                       | 50 +++++++++++++++++--------
>>   gcc/testsuite/gcc.dg/fold-stringops-1.c | 23 ++++++++++++
>>   2 files changed, 57 insertions(+), 16 deletions(-)
>>   create mode 100644 gcc/testsuite/gcc.dg/fold-stringops-1.c
>>
>> diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
>> index 6e25a7c05db..92e15784803 100644
>> --- a/gcc/gimple-fold.c
>> +++ b/gcc/gimple-fold.c
>> @@ -3088,6 +3088,19 @@ gimple_fold_builtin_memory_chk (gimple_stmt_iterator *gsi,
>>     return true;
>>   }
>>
>> +static void
>> +dump_transformation (gimple *from, gimple *to)
> I assume that both from and to will always be builtin calls ?
> In that case, perhaps better to use gcall * here (and in rest of patch).
> Also, needs a top-level comment describing the function.
>> +{
>> +  if (dump_file && (dump_flags & TDF_DETAILS))
> Perhaps better to use dump_enabled_p ?
>> +    {
>> +      fprintf (dump_file, "transformed ");
> Perhaps use dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, ...) ?
> I think you can use gimple_location to get the location.
> 

Thanks, I'll fix these up.

Siddhesh


More information about the Gcc-patches mailing list