🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.gcc.bug
Article #2170

gcc 1.32/386 bug

#2170
From: James Van Artsdalen
Date: Fri, 20 Jan 1989 03:48
22 lines
1238 bytes
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
Technical Details
Message-ID: <12958@bigtex.cactus.org>
Path: arc1-ca.pugleaf.net!utzoo!telly!ddsw1!lll-winken!uunet!tut.cis.ohio-state.edu!cs.utexas.edu!milano!bigtex!james

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!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