https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117355
Bug ID: 117355
Summary: [15 regression] firebird miscompiled
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: sjames at gcc dot gnu.org
Target Milestone: ---
Originally reported downstream in Gentoo at https://bugs.gentoo.org/942205.
With -D_FORTIFY_SOURCE=2/3, this aborts with trunk:
```
#include <cstdint>
#include <cstdio>
#include <cstring>
static void gen_blr(const char *string) {
char line[256];
const char *p = string;
int length = static_cast<int>(strlen(p));
const char *q;
q = p + strlen(p);
char *q1 = line;
for (const char *p1 = p; p1 < q;) {
if ((*q1++ = *p1++) == 'g') {
if (p1 < q && (*q1++ = *p1++) == 'd') {
if (p1 < q && (*q1++ = *p1++) == 's') {
if (p1 < q && (*q1++ = *p1++) == '_') {
char d = 0;
if (p1 < q && ((d = *p1++) == '_' || d == '$')) {
strncpy(q1 - 4, "isc", 3);
}
}
}
}
}
}
}
int main() { gen_blr("string gds__)"); }
```