🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Timothy B. Moore Wed, 04 Nov 1992 05:52
bug in redeclaration of inline function
#78
Author: Timothy B. Moore
Date: Wed, 04 Nov 1992 05:52
141 lines
3719 bytes
This file:

extern "C" {
  extern fabs(double);
}

inline double abs(double d) { return fabs(d); }
double abs(double arg);

double (*foo())(double)
{
  return abs;
}

produces the assembly file below. Note that abs__fd is defined twice.
A larger example (Complex.cc from libg++-2.2, compiled under hpux on
an hp700) wanders off to never-never land when outputing the second
definition, but I'm not worried about that because the definition
should only be output once.



 ../gcc-hp700bsd/xgcc -B../gcc-hp700bsd/ inline.cc -S -v
Reading specs from ../gcc-hp700bsd/specs
gcc version 2.2.2
../gcc-hp700bsd/cpp -lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus
-Dhppa -Dhp9000s800 -D__hp9000s800 -Dhp9k8 -Dunix -D_HPUX_SOURCE -Dhp9000 -Dhp8
00 -Dspectrum -DREVARGV -DBSD_4_4 -D__hppa__ -D__hp9000s800__ -D__hp9000s800 -D_
_hp9k8__ -D__unix__ -D___HPUX_SOURCE__ -D__hp9000__ -D__hp800__ -D__spectrum__ -
D__REVARGV__ -D__BSD_4_4__ -D__hppa -D__hp9000s800 -D__hp9000s800 -D__hp9k8 -D__
unix -D___HPUX_SOURCE -D__hp9000 -D__hp800 -D__spectrum -D__REVARGV -D__BSD_4_4
inline.cc /usr/tmp/cc005831.i
GNU CPP version 2.2.2 (hppa)
 ../gcc-hp700bsd/cc1plus /usr/tmp/cc005831.i -quiet -dumpbase inline.cc -version
 -o inline.s
GNU C++ version 2.2.2 (hppa) compiled by GNU C version 1.39.

	.SPACE $PRIVATE$
	.SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
	.SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
	.SPACE $TEXT$
	.SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
	.SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
	.IMPORT $global$,DATA
	.IMPORT $$dyncall,MILLICODE
; gcc_compiled.:
	.IMPORT fabs,CODE
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
	.EXPORT foo__Fv,CODE
	.EXPORT foo__Fv,ENTRY,PRIV_LEV=3,RTNVAL=GR
foo__Fv
	.PROC
	.CALLINFO FRAME=64,NO_CALLS
	.ENTRY
	copy 4,1
	copy 30,4
	stwm 1,64(0,30)
	ldil L'abs__Fd,%r28
	ldo R'abs__Fd(%r28),%r28
	bl,n L$0003,0
	bl,n L$0003,0
	bl,n L$0004,0
	bl,n L$0003,0
L$0004
L$0003
	ldo 64(%r4),%r30
	bv 0(%r2)
	ldwm -64(%r30),4
	.EXIT
	.PROCEND
	.align 4
abs__Fd
	.PROC
	.CALLINFO FRAME=128,CALLS,SAVE_RP
	.ENTRY
	stw 2,-20(0,30)
	copy 4,1
	copy 30,4
	stwm 1,128(0,30)
	ldo 8(4),1
	fstds,ma %fr12,8(0,1)
	fcpy,dbl %fr5,%fr12
	fcpy,dbl %fr12,%fr5
	.CALL ARGW0=FU,ARGW1=FR
	bl fabs,2
	nop
	copy %r28,%r19
	stwm %r19,4(0,30)
	fldws,mb -4(0,30),%fr4
	fcnvxf,sgl,dbl %fr4,%fr4
	bl,n L$0001,0
	bl,n L$0001,0
	bl,n L$0002,0
	bl,n L$0001,0
L$0002
L$0001
	ldo 8(4),1
	fldds,ma 8(0,1),%fr12
	ldo 64(%r4),%r30
	ldw -84(%r30),%r2
	bv 0(%r2)
	ldwm -64(%r30),4
	.EXIT
	.PROCEND
	.align 4
abs__Fd
	.PROC
	.CALLINFO FRAME=128,CALLS,SAVE_RP
	.ENTRY
	stw 2,-20(0,30)
	copy 4,1
	copy 30,4
	stwm 1,128(0,30)
	ldo 8(4),1
	fstds,ma %fr12,8(0,1)
	fcpy,dbl %fr5,%fr12
	fcpy,dbl %fr12,%fr5
	.CALL ARGW0=FU,ARGW1=FR
	bl fabs,2
	nop
	copy %r28,%r19
	stwm %r19,4(0,30)
	fldws,mb -4(0,30),%fr4
	fcnvxf,sgl,dbl %fr4,%fr4
	bl,n L$0001,0
	bl,n L$0001,0
	bl,n L$0002,0
	bl,n L$0001,0
L$0002
L$0001
	ldo 8(4),1
	fldds,ma 8(0,1),%fr12
	ldo 64(%r4),%r30
	ldw -84(%r30),%r2
	bv 0(%r2)
	ldwm -64(%r30),4
	.EXIT
	.PROCEND
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads