🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.gcc.bug
Article #156

gcc-2.1-sparc-sun-sunos4.0.3 -fcaller-saves generates bad code

#156
From: George Young
Date: Mon, 06 Apr 1992 13:18
50 lines
2532 bytes
Environment: Sun 4/390 SunOS 4.0.3, gcc 2.1
When a module of a C program compiled as:
	gcc -O2 -g k.c -c
or
	gcc -O -fcaller-saves -g k.c -c
the program fails with a bus error.  When compiled as:
	gcc -O2 -fno-caller-saves -g k.c -c
or
	gcc -O -g k.c -c
it runs fine.  

Here's a script of compiling the file:

vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
make CFLAGS='-O2 -v -g'
gcc -O2 -v -g   -c k.c -o k.o
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-sunos4.0.4/2.1/specs
gcc version 2.1
 /usr/local/lib/gcc-lib/sparc-sun-sunos4.0.4/2.1/cpp -lang-c -v -undef -D__GNUC__
=2 -Dsparc -Dsun -Dunix -D__sparc__ -D__sun__ -D__unix__ -D__sparc -D__sun -D__un
ix -D__OPTIMIZE__ -g k.c /usr/tmp/cca06048.i
GNU CPP version 2.1 (sparc)
 /usr/local/lib/gcc-lib/sparc-sun-sunos4.0.4/2.1/cc1 /usr/tmp/cca06048.i -quiet -
dumpbase k.c -g -O2 -version -o /usr/tmp/cca06048.s
GNU C version 2.1 (sparc) compiled by GNU C version 2.1.
In file included from j.h:54, from k.c:15:
/usr/include/memory.h:6: warning: conflicting types for built-in function `memcpy
'
 as -o k.o /usr/tmp/cca06048.s
gcc a.o ai.o ap.o au.o c.o cc.o cf.o cg.o cp.o cr.o ct.o cx.o f.o i.o io.o j.o k.
o lj.o m.o p.o pc.o pv.o r.o rt.o s.o t.o u.o ut.o v.o vb.o ve.o vg.o vh.o vi.o v
m.o vp.o vs.o vz.o w.o x.o xf.o xs.o xw.o -lm -o j

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Stepping though with gdb seems to indicate it crashes when returning from
the function 'IfromD', but I don't know enough about function call assembler
code to pinpoint it better.

The source code for this program is ~260 kbytes, so I have not included it here.
I have made it available via anonymous ftp from:
	 vdd.vlsi.ll.mit.edu: ~ftp/pub/j.tar.Z

To manifest the bug, just run make "CFLAGS=-O2 -g", and do:
	echo '.i3 4' | ./j

George Young,  Rm. B-141		young@vlsi.ll.mit.edu
MIT Lincoln Laboratory			young@vdd.vlsi.ll.mit.edu
244 Wood St.				[129.55.11.1]
Lexington, Massachusetts  02173-9108	(617) 981-2756
Technical Details
Message-ID: <9204062118.AA12522@rose.VLSI.LL.MIT.EDU>
Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!vlsi.ll.mit.EDU!young

Show Full Headers
Complete Article Headers
Newsgroups: gnu.gcc.bug
Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!vlsi.ll.mit.EDU!young
From: young@vlsi.ll.mit.EDU (George Young)
Subject: gcc-2.1-sparc-sun-sunos4.0.3 -fcaller-saves generates bad code
Message-ID: <9204062118.AA12522@rose.VLSI.LL.MIT.EDU>
Sender: gnulists@ai.mit.edu
Reply-To: young@vlsi.ll.mit.edu
Organization: GNUs Not Usenet
Distribution: gnu
Date: Mon, 6 Apr 1992 13:18:47 GMT
Approved: bug-gcc@prep.ai.mit.edu
Lines: 51