Hi! This bug introduced in r11-7448-gff92ede8d269375f800e1b347a48f4698874b4a3 has been fixed already by r12-1354-g2d2ed777b23ab6503027039e0adbfe1162f52b2f aka PR100852 fix.
Regtested on x86_64-linux -m32/-m64, committed to trunk (so far) as obvious. 2021-11-15 Jakub Jelinek <ja...@redhat.com> PR debug/100469 * g++.dg/opt/pr100469.C: New test. --- gcc/testsuite/g++.dg/opt/pr100469.C.jj 2021-11-15 14:44:46.796604198 +0100 +++ gcc/testsuite/g++.dg/opt/pr100469.C 2021-11-15 14:44:38.662715051 +0100 @@ -0,0 +1,32 @@ +// PR debug/100469 +// { dg-do compile } +// { dg-options "-O2 -fcompare-debug -fno-tree-dse -fno-tree-forwprop -fno-tree-tail-merge --param=sccvn-max-alias-queries-per-access=0" } + +struct S +{ + long m; + S (const S &s) + { + m = s.m; + } + S (long l) + { + m = l; + } + bool operatorX (const S &s) + { + return m >= s.m; + } +}; + +static inline S +bar (S a, S b) +{ + return a.operatorX (b) ? a : b; +} + +S +foo (S s) +{ + return bar (s, (S) 0); +} Jakub