🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.gcc.bug
Article #2747

Bug in gcc version 1.27

#2747
From: Jayaram Kalpathy
Date: Fri, 09 Jun 1989 23:40
70 lines
1629 bytes
/* From: Jayaram Kalpathy      oliveb!cirrusl!jayaram@sun.com */

#include <stdio.h>

/* try running with > echo hello | a.out */
    
main() {
    int i = 0;
    while (i != EOF) {
	i = getchar();
	printf("(%c %d)", i, i);
    }
}

/* ---------------------------------------------------------

 Bug: generates erroneous assembly code. The following two similar cases
      generate correct code:

    1. Change "int i.." to "char i.."
    2. Change the while line and the next to:
         while ((i = getchar()) != EOF)


 Here's what the assembly code looks like:

#NO_APP
.text
LC0:
	.ascii "(%c %d)\0"
	.even
.globl _main
_main:
	link a6,#-4
	clrl a6@(-4)
L2:
	moveq #-1,d1
	cmpl a6@(-4),d1
	jeq L3
	subql #1,__iob
	tstl __iob
	jlt L4
	movel __iob+4,a0
	moveb a0@,d0
	clrl a6@(-4)
	movel a6@(-4),d1
	moveb d0,d1
	movel d1,d1
                             ## needs a line: movel d1,a6@(-4)  here
	addql #1,__iob+4
	jra L5
L4:
	pea __iob
	jbsr __filbuf
	addqw #4,sp
	movel d0,a6@(-4)
L5:
	movel a6@(-4),sp@-
	movel a6@(-4),sp@-
	pea LC0
	jbsr _printf
	addw #12,sp
	jra L2
L3:
L1:
	unlk a6
	rts

------------------------------------------------------------- */
Technical Details
Message-ID: <8906092340.AA12966@sun602.CIRRUSLOGIC.uucp>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!SUN.COM!cirrusl!jayaram

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!SUN.COM!cirrusl!jayaram
From: cirrusl!jayaram@SUN.COM (Jayaram Kalpathy)
Newsgroups: gnu.gcc.bug
Subject: Bug in gcc version 1.27
Message-ID: <8906092340.AA12966@sun602.CIRRUSLOGIC.uucp>
Date: 9 Jun 89 23:40:45 GMT
Sender: daemon@tut.cis.ohio-state.edu
Distribution: gnu
Organization: GNUs Not Usenet
Lines: 70