Path: utzoo!telly!ddsw1!lll-winken!uunet!tut.cis.ohio-state.edu!cs.utexas.edu!milano!bigtex!james From: james@bigtex.cactus.org (James Van Artsdalen) Newsgroups: gnu.gcc.bug Subject: gcc 1.32/386 bug Message-ID: <12958@bigtex.cactus.org> Date: 20 Jan 89 03:48:36 GMT Organization: Institute of Applied Cosmology, Austin TX Lines: 22 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