https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82628
--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Uroš Bizjak from comment #3) > Looks like combine failure to me: > > I don't think that combining: > > (set (reg:CC 17 flags) > (compare:CC (subreg:SI (reg/v:DI 89 [ d ]) 0) > (const_int 1 [0x1]))) > > with > > (insn 20 19 21 4 (parallel [ > (set (reg:CCGZ 17 flags) > (compare:CCGZ (reg:SI 94) > (plus:SI (ltu:SI (reg:CC 17 flags) > (const_int 0 [0])) > (subreg:SI (reg/v:DI 89 [ d ]) 4)))) > (clobber (scratch:SI)) > > should result in unconditional jump: > > (set (pc) > (label_ref 16)) Please note two different subregs of the same register. Maybe somewhere combine figures out that two different subregs of the same register are the same (which are not - see the offsets!) and removes insn due to the invalid "simplification". Segher?