[gnu.gcc.bug] GCC 1.34 bug

cruff@NIWOT.UCAR.EDU (Craig Ruff) (03/25/89)

Version: 1.34

Input file: (t.c)
------------------
main() {
}
------------------


Command arguments:
	
	gcc -a t.c

Machine files:

	tm.h:	tm-sun3-nfp.h
	md:	m68k.md

Machine:
	Sun-3, SunOS 4.0.1

Description:
	Produces incorrect assembler opcode for call to the function
	block profiler '__bb_init_func' using the Sun assembler.
	Opcode produced, 'call', should be 'jsr'.


Compiler output:
-----------------
#NO_APP
gcc_compiled.:
.text
	.even
.globl _main
_main:
	link a6,#0
	tstl LPBX0
	bne LPI0
	pea LPBX0
	call ___bb_init_func
	addql #4,sp
LPI0:
L1:
	unlk a6
	rts
.data
	.even
LPBX0:
	.long 0
	.long LPBX1
	.long LPBX2
	.long 0
	.long 0
	.long LPBX3
LPBX1:
	.ascii "t.c\0"
LPBX2:
	.skip 0
.text
LPBX3:
	.long LPBX3
-----------------


Source fix context diff:
-----------------
*** tm-m68k.h	Fri Mar 24 09:21:18 1989
--- tm-m68k.h.old	Wed Mar  8 08:20:45 1989
***************
*** 632,638 ****
     basic block profiling info, if that has not already been done.  */
  
  #define FUNCTION_BLOCK_PROFILER(FILE, LABELNO)  \
!   fprintf (FILE, "\ttstl LPBX0\n\tbne LPI%d\n\tpea LPBX0\n\tjsr ___bb_init_func\n\taddql #4,sp\nLPI%d:\n",  \
  	   LABELNO, LABELNO);
  
  /* Output assembler code to FILE to increment the entry-count for
--- 632,638 ----
     basic block profiling info, if that has not already been done.  */
  
  #define FUNCTION_BLOCK_PROFILER(FILE, LABELNO)  \
!   fprintf (FILE, "\ttstl LPBX0\n\tbne LPI%d\n\tpea LPBX0\n\tcall ___bb_init_func\n\taddql #4,sp\nLPI%d:\n",  \
  	   LABELNO, LABELNO);
  
  /* Output assembler code to FILE to increment the entry-count for
-----------------

adamj%WEB.Berkeley.EDU@LILAC.BERKELEY.EDU (03/26/89)

	cc1 is dumping core for the program I am going to send to you.
This is GCC 1.34 compiled the normal way for a Sun 3/50.
gcc -g -c bits.c
gcc: Program cc1 got fatal signal 11.
make: *** Error 1

	In the next three messages, I'm mailing you bits.[ch], and utils.h.
This should be enough to induce the segmentation fault.

		--Adam J. Richter
		  adamj@widow.berkeley.edu