james@bigtex.cactus.org (James Van Artsdalen) (01/20/89)
GNU C 1.32, SysV 386. An insn pattern was added to 1.32/386 to push a byte. Unfortunately, the 386 cannot do this. The assembler fails when given a gcc-generated line like: pushw %bl The news insn pattern seems internally inconsistent: it passes a QI argument to an opcode expecting an HI. Since there isn't a QI push, how do I tell the assembler it cannot push QI and must convert to HI? ;; emit_push_insn when it calls move_by_pieces ;; requires an insn to "push a byte". ;; But actually we use pushw, which has the effect of rounding ;; the amount pushed up to a halfword. (define_insn "" [(set (match_operand:QI 0 "push_operand" "=<") (match_operand:QI 1 "general_operand" "q"))] "" "push%W %1") -- James R. Van Artsdalen james@bigtex.cactus.org "Live Free or Die" DCC Corporation 9505 Arboretum Blvd Austin TX 78759 512-338-8789