https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118696
Bug ID: 118696
Summary: [15 Regression] qemu miscompilation on s390x
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: jakub at gcc dot gnu.org
Target Milestone: ---
static inline __int128
foo (unsigned long long x, unsigned long long y)
{
return (unsigned __int128) y << 64 | x;
}
__attribute__((noipa)) __int128
bar (__int128 x, __int128 y)
{
return x < y ? x : y;
}
int
main ()
{
__int128 a = foo (0x10000, 0);
if (bar (foo (0, 1), a) != a)
__builtin_abort ();
}
is miscompiled with -O0 -march=z13 or -O2 -march=z13 (but not e.g. -march=z10).
It is bar aka MIN_EXPR that is miscompiled, r15-7041 still works ok, r15-7054
fails.
Bisecting now.