On 11/11/21 02:06, Jeff Law wrote:


On 11/10/2021 10:47 AM, Siddhesh Poyarekar wrote:
Use the ignore flag to transform BUILT_IN_STPCPY_CHK to BUILT_IN_STRCPY
when set.  This transformation will happen in a subsequent fold anyway
but do it right away and save the additional effort.

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.
OK.

Note we usually want testcases for this kind of stuff too.  It's not strictly necessary, but it's hard to go wrong if you're including a test that verifies your transformation happens at the point where you expect it to happen.

I started looking at how I would write a test for this since the folder would recursively simplify the statement in the same pass and realized that the transformation sequence during lowering is __stpncpy_chk -> __strncpy_chk -> __strncpy. As a result the transformation I'm trying to do already will have happened higher up. I'm testing an updated patch that avoids having to fold twice and go directly from __stpncpy_chk -> __strncpy.

Siddhesh

Reply via email to