https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80101
--- Comment #1 from Segher Boessenkool <segher at gcc dot gnu.org> --- power6.md defines a bypass: ; define the bypass for the case where the value written ; by a fixed point op is used as the source value on a ; store. (define_bypass 1 "power6-integer,\ power6-exts,\ power6-shift,\ power6-insert,\ power6-insert-dword" "power6-store,\ power6-store-update,\ power6-store-update-indexed,\ power6-fpstore,\ power6-fpstore-update" "store_data_bypass_p") where power6-integer is defined as: (define_insn_reservation "power6-integer" 1 (and (ior (eq_attr "type" "integer") (and (eq_attr "type" "add,logical") (eq_attr "dot" "no"))) (eq_attr "cpu" "power6")) "FXU_power6") and the default for "type" is "integer". The instruction on which we crash is: (define_insn "blockage" [(unspec_volatile [(const_int 0)] UNSPECV_BLOCK)] "" "") (which does not have a SET in it, which however is required by store_data_bypass_p). "blockage" should not have type "integer" for this to work. To fix it more generally, maybe we can teach bypass_p to ignore insns without outputs?