Rask Ingemann Lambertsen <[EMAIL PROTECTED]> writes: > I just got > > /home/rask/cvssrc/gcc/gcc/testsuite/gcc.c-torture/compile/complex-3.c:17: > error: unrecognizable insn: > (insn 69 67 70 5 (set (mem:SC (pre_dec:HI (reg/f:HI 12 sp)) [0 S8 A8]) > (concat:SC (reg:SF 36) > (reg:SF 37))) -1 (nil) > (nil)) > > which I thought I'd covered with > > (define_mode_macro GT16 [SI DI TI SF DF XF SC DC XC SD DD TD CHI CSI CDI > CTI]) > > (define_insn_and_split "*push<mode>1" > [(set (mem:GT16 (pre_dec:HI (reg:HI SP_REG))) > (match_operand:GT16 0 "general_operand" "RmIpu"))] > "TARGET_PUSH_IMM || !CONSTANT_P (operands[0])" > "#" > "reload_completed" > ... > > but looking at recog.c, sure enough: general_operand() doesn't accept the > (concat ...) construct. Is that intentional?
I would expect that most existing backends are not going to handle a CONCAT correctly. If you want to change general_operand to accept CONCAT, you will need to audit existing uses. Ian