[Bug tree-optimization/95821] Failure to optimize strchr to use memchr for string constant

2022-06-16 Thread hjl.tools at gmail dot com via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95821

--- Comment #4 from H.J. Lu  ---
Created attachment 53157
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53157&action=edit
A patch

[Bug tree-optimization/95821] Failure to optimize strchr to use memchr for string constant

2021-12-21 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95821

--- Comment #3 from Andrew Pinski  ---
(In reply to Andrew Pinski from comment #2)
> Confirmed.
> auto f(char c)
> {
>   auto t = "123";
>   int t1;
>   switch (c)
> {
>case '1':
>  t1 = 1;
>case '2':
>  t1 = 2;
>case '3':
>  t1 = 3;
>default:
>  t = 0;
>  return t;
> }
>return t+t1;
> }

I missed '\0' (and break's):

auto f(char c)
{
  auto t = "123";
  int t1;
  switch (c)
{
   case '1':
 t1 = 1;
 break;
   case '2':
 t1 = 2;
 break;
   case '3':
 t1 = 3;
 break;
   case '\0':
 t1 = 4;
 break;
   default:
 t = 0;
 return t;
}
   return t+t1;
}

[Bug tree-optimization/95821] Failure to optimize strchr to use memchr for string constant

2021-12-21 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95821

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Severity|normal  |enhancement
 Ever confirmed|0   |1
   Last reconfirmed||2021-12-22

--- Comment #2 from Andrew Pinski  ---
Confirmed.
Though for small strings it might even make sense to inline it, eg.:
auto f(char c)
{
return strchr("123", c);
}
to
auto f(char c)
{
  auto t = "123";
  int t1;
  switch (c)
{
   case '1':
 t1 = 1;
   case '2':
 t1 = 2;
   case '3':
 t1 = 3;
   default:
 t = 0;
 return t;
}
   return t+t1;
}

[Bug tree-optimization/95821] Failure to optimize strchr to use memchr for string constant

2020-06-22 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95821

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek  ---
For -Os that is an undesirable change because it makes the code larger.  But
otherwise yes, seems useful.