Thread View: gnu.gcc.bug
1 messages
1 total messages
Started by Timothy B. Moore
Wed, 04 Nov 1992 05:52
bug in redeclaration of inline function
Author: Timothy B. Moore
Date: Wed, 04 Nov 1992 05:52
Date: Wed, 04 Nov 1992 05:52
141 lines
3719 bytes
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