Hi All, I am getting the error message bellow while hacking my gcc backend. Any suggestions on how to fix this?
error: insn does not satisfy its constraints: (insn 25 50 26 2 (set (reg:HI 1 %r0 [33]) (plus:HI (mem/s/j:HI (plus:HI (reg:HI 3 %r2) (reg/v/f:HI 11 %i2h [orig:28 cell ] [28])) [0 <variable>.dod S2 A8]) (reg:HI 1 %r0 [43]))) 8 {*addhi3} (insn_list:REG_DEP_TRUE 3 (insn_list:REG_DEP_TRUE 24 (nil))) (nil)) The md description for this instruction is: ;; addhi3 (define_expand "addhi3" [(set (match_operand:HI 0 "register_operand" "") (plus:HI (match_operand:HI 1 "cool_addhi_operand" "") (match_operand:HI 2 "cool_addhi_operand" "")))] "" "") (define_insn "*addhi3" [(set (match_operand:HI 0 "register_operand" "=r ,r ,r") (plus:HI (match_operand:HI 1 "cool_addhi_operand" "%0 ,rim,r") (match_operand:HI 2 "cool_addhi_operand" "rim,0 ,r")))] "" { operands[3] = simplify_gen_subreg (QImode, operands[0], HImode, 1); operands[4] = simplify_gen_subreg (QImode, operands[0], HImode, 0); operands[5] = simplify_gen_subreg (QImode, operands[1], HImode, 1); operands[6] = simplify_gen_subreg (QImode, operands[1], HImode, 0); operands[7] = simplify_gen_subreg (QImode, operands[2], HImode, 1); operands[8] = simplify_gen_subreg (QImode, operands[2], HImode, 0); if (!which_alternative) return "ADD\t%3,%7\n\tADDC\t%4,%8"; else if (1 == which_alternative) return "ADD\t%3,%5\n\tADDC\t%4,%6"; else return "ADD\t%3,%5,%8\n\tADDC\t%4,%5,%8"; }) Regards, -Omar