https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80791
--- Comment #8 from amker at gcc dot gnu.org --- So whole expanded rtl is: ;; ;; Full RTL generated for this function: ;; 1: NOTE_INSN_DELETED 5: NOTE_INSN_BASIC_BLOCK 2 2: r160:DI=%3:DI 3: NOTE_INSN_FUNCTION_BEG 4: r157:DI=0x100 20: L20: 7: NOTE_INSN_BASIC_BLOCK 4 8: {r161:SI=r157:DI#0>>0x1;clobber ca:SI;} 9: r157:DI=sign_extend(r161:SI) 10: r162:DI=[unspec[`*.LC0',%2:DI] 47] REG_EQUAL `a' 11: r163:DI=r157:DI<<0x3 12: r164:DI=r162:DI+r163:DI 13: r165:SI=r160:DI#0<<0x3 ;;r160 use 2 14: r166:DI=zero_extend(r165:SI) 15: r168:DI=[unspec[`*.LC0',%2:DI] 47] REG_EQUAL `a' 16: r167:DI=r166:DI+r168:DI 17: [r164:DI]=r167:DI 18: r169:SI=r160:DI#0+0x4 ;;r160 use 3 19: r160:DI=sign_extend(r169:SI) ;;r160 def 21: r170:SI=0x4000000f 22: r171:CC=cmp(r160:DI#0,r170:SI) ;;r160 use 1 23: pc={(r171:CC<=0)?L20:pc} REG_BR_PROB 8500 24: NOTE_INSN_BASIC_BLOCK 5 I think it's the loop carried dependence of r160 breaks sms here.