https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117800
Bug ID: 117800
Summary: [12/13/14/15 regression] libscrypt miscompiled since
r11-4586-g617695cdc2b3d9
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: ipa
Assignee: unassigned at gcc dot gnu.org
Reporter: sjames at gcc dot gnu.org
CC: fxcoudert at gcc dot gnu.org, hubicka at gcc dot gnu.org
Target Milestone: ---
Created attachment 59717
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59717&action=edit
crypto_scrypt-nosse.c
Reported downstream in Gentoo at https://bugs.gentoo.org/931556 as well as
upstream at https://github.com/technion/libscrypt/issues/60 where FX appears
(hi!)
The bug is interesting in that it appears to have exposed an (Apple?) Clang bug
as well and it makes me wonder if the testcase is really well-defined, but I
can't yet find a reason for to be undefined.
10 is fine, 11..15 aren't. It needs -O3.
```
$ gcc crypto_scrypt-nosse.c -o crypto_scrypt-nosse -O2 && ./crypto_scrypt-nosse
crypto_scrypt-nosse.c:13:6: warning: array ‘libscrypt_SHA256_Final_len’ assumed
to have one element
13 | char libscrypt_SHA256_Final_len[], libscrypt_HMAC_SHA256_Init_pad[];
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
crypto_scrypt-nosse.c:13:36: warning: array ‘libscrypt_HMAC_SHA256_Init_pad’
assumed to have one element
13 | char libscrypt_SHA256_Final_len[], libscrypt_HMAC_SHA256_Init_pad[];
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ gcc crypto_scrypt-nosse.c -o crypto_scrypt-nosse -O3 && ./crypto_scrypt-nosse
crypto_scrypt-nosse.c:13:6: warning: array ‘libscrypt_SHA256_Final_len’ assumed
to have one element
13 | char libscrypt_SHA256_Final_len[], libscrypt_HMAC_SHA256_Init_pad[];
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
crypto_scrypt-nosse.c:13:36: warning: array ‘libscrypt_HMAC_SHA256_Init_pad’
assumed to have one element
13 | char libscrypt_SHA256_Final_len[], libscrypt_HMAC_SHA256_Init_pad[];
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Aborted (core dumped) ./crypto_scrypt-nosse
```