Hi Jakub,

While debugging some of my tests I noticed unexpected differences
between the results depending on whether or not the stpcpy function
is declared.  It turns out that the differences are caused by
the handle_builtin_strcpy function in tree-ssa-strlen.c testing
for stpcpy having been declared:

  if (srclen == NULL_TREE)
    switch (bcode)
      {
      case BUILT_IN_STRCPY:
      case BUILT_IN_STRCPY_CHK:
      case BUILT_IN_STRCPY_CHKP:
      case BUILT_IN_STRCPY_CHK_CHKP:
        if (lhs != NULL_TREE || !builtin_decl_implicit_p (BUILT_IN_STPCPY))
          return;

and taking different paths depending on whether or not the test
succeeds.

As far as can see, the tests have been there since the pass was
added, but I don't understand from the comments in the file what
their purpose is or why optimization decisions involving one set
of functions (I think strcpy and strcat at a minimum) are based
on whether another function has been declared or not.

Can you explain what they're for?

Thanks
Martin

Reply via email to