Article View: gnu.gcc.bug
Article #78bug in redeclaration of inline function
From: 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
Technical Details
Message-ID:
<9211041952.AA05841@defmacro.cs.utah.edu>Path:
arc1-ca.pugleaf.net!sparky!uunet!charon.amdahl.com!pacbell.com!iggy.GW.Vitalink.COM!cs.widener.edu!umn.edu!spool.mu.edu!yale.edu!qt.cs.utexas.edu!cs.utexas.edu!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!defmacro.cs.utah.edu!mooreShow Full Headers
Complete Article Headers
Newsgroups: gnu.gcc.bug Path: arc1-ca.pugleaf.net!sparky!uunet!charon.amdahl.com!pacbell.com!iggy.GW.Vitalink.COM!cs.widener.edu!umn.edu!spool.mu.edu!yale.edu!qt.cs.utexas.edu!cs.utexas.edu!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!defmacro.cs.utah.edu!moore From: moore@defmacro.cs.utah.edu (Timothy B. Moore) Subject: bug in redeclaration of inline function Message-ID: <9211041952.AA05841@defmacro.cs.utah.edu> Sender: gnulists@ai.mit.edu Organization: GNUs Not Usenet Distribution: gnu Date: Wed, 4 Nov 1992 05:52:16 GMT Approved: bug-gcc@prep.ai.mit.edu Lines: 142