https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111334
--- Comment #8 from chenglulu <chenglulu at loongson dot cn> --- (In reply to Andrew Pinski from comment #4) > (In reply to chenglulu from comment #3) > > This involves the template <optab>di3_fake: > > (define_insn "<optab>di3_fake" > > [(set (match_operand:DI 0 "register_operand" "=r,&r,&r") > > (sign_extend:DI > > (any_div:SI (match_operand:DI 1 "register_operand" "r,r,0") > > (match_operand:DI 2 "register_operand" "r,r,r"))))] > > That pattern definitely looks broken. > Divide's operands' mode must match the mode of the divide IIRC. OK, thanks! So the compilation failure is caused by an error in this template, right? (Sorry, I don't understand the optimization of this combine)