https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109777
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Jeffrey A. Law from comment #4) > If it's inside the bfin bundling code, let's just mark it as a p4 and we can > chase it down whenever it's convenient. My primary motivation is to catch > generic issues. A target specific issue on a barely used target just isn't > that interesting IMHO. Thanks, it actaully might be the scheduler which is introducing the difference such that bfin bundling is different. I just noticed the modes of the two instructions: (insn:SI # # # 6 (set (reg:SI 3 R3 [177]) (ashift:SI (reg:SI 4 R4 [orig:87 x$0 ] [87]) (const_int 1 [0x1]))) "t.c":44:47# {*ashlsi3_insn} (nil)) vs with -g: (insn:TI # # # 6 (set (reg:SI 3 R3 [177]) (ashift:SI (reg:SI 4 R4 [orig:87 x$0 ] [87]) (const_int 1 [0x1]))) "t.c":44:47# {*ashlsi3_insn} (nil)) --- I think this is caused by having the debug insn afterwards: (debug_insn # # # 6 (var_location:SI D#14 (ior:SI (reg:SI 3 R3 [177]) (const_int 31 [0x1f])))# (nil)) which might be saying it is scheduled with the above one while without -g, it is not schedule with another instruction; hence the SImode.