https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110914

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2023-08-05
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed, The strlen pass is removing it ...

Self contained testcase:
```

struct Int8_buf
{
    Int8_buf(const char* s, __SIZE_TYPE__ l)
    {
        val_int = 0;
        __builtin_memcpy(&val_int, s, l!=0);
    }

    unsigned char val_int;
};

int __attribute__ ((noinline)) foo(const char* s, __SIZE_TYPE__ l)
{
    Int8_buf b(s, l);
    return b.val_int;
}

int main()
{
    const char *cs="123456";
    int a = foo(cs, __builtin_strlen(cs) - 5);
    int b = foo(cs, __builtin_strlen(cs) - 6);
    if (a != '1')
     __builtin_abort();
    if (b != 0)
     __builtin_abort();
}
```

Reply via email to