https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106609
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2022-11-24 Status|UNCONFIRMED |NEW CC| |jakub at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Mikael Pettersson from comment #12) > I tried compiling the gcc-13 cross compiler using the broken gcc-12 host > compiler and -mtune-ctrl=^use_bt but that didn't help. > > I then tried rebuilding the broken gcc-12 host compiler with the new > splitters disabled, one by one. Disabling the "*bt<mode>_setcqi" one did > unbreak the gcc-13 cross-compiler: > > diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md > index 48532eb7ddf..0780ba992f3 100644 > --- a/gcc/config/i386/i386.md > +++ b/gcc/config/i386/i386.md > @@ -12830,7 +12830,7 @@ > (const_int 1) > (zero_extend:SI (match_operand:QI 2 "register_operand")))) > (clobber (reg:CC FLAGS_REG))] > - "TARGET_USE_BT && ix86_pre_reload_split ()" > + "0 && TARGET_USE_BT && ix86_pre_reload_split ()" > "#" > "&& 1" > [(set (reg:CCC FLAGS_REG) Ok, reproduced with last night's gcc trunk as the x86_64-linux system compiler (with/without the above patch) and r12-8924-ga6b1f6126de5e4 as 12 branch for the cross-compiler. The difference appears first in the sh_treg_combine2 dump -not a condition store -other set found - aborting trace +inverted condition store +tracing ccreg +set of ccreg not found + +cbranch trace summary: etc. And bisection points to insn-preds.o.