https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111334
--- Comment #2 from chenglulu <chenglulu at loongson dot cn> --- This problem occurred after adding the r14-3511 optimization. However, during the debugging process, it was discovered that it was due to the attempt to generate rtx during the combine pass optimization. (set (reg:DI 124) (zero_extend:DI (subreg:QI (umod:SI (reg:DI 122 [ reg ]) (ior:DI (if_then_else:DI (eq:DI (reg:DI 114) (const_int 0 [0])) (reg:DI 112) (const_int 0 [0])) (reg:DI 118))) 0))) During the optimization process, the function simplify_context::simplify_subreg will make the following judgments: rtx simplify_context::simplify_subreg (machine_mode outermode, rtx op, machine_mode innermode, poly_uint64 byte) { /* Little bit of sanity checking. */ gcc_assert (innermode != VOIDmode); gcc_assert (outermode != VOIDmode); gcc_assert (innermode != BLKmode); gcc_assert (outermode != BLKmode); gcc_assert (GET_MODE (op) == innermode || GET_MODE (op) == VOIDmode); ... op is (reg:DI 122 [ reg ]) but innermode is SI_mode,so wrong.