[gnu.gcc.bug] gcc 1.32/386 bug

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