Thread View: gnu.g++.bug
1 messages
1 total messages
Started by Clark Cooper
Mon, 24 Oct 1988 15:05
Bad constructor code in G++ 1.27.0
Author: Clark Cooper
Date: Mon, 24 Oct 1988 15:05
Date: Mon, 24 Oct 1988 15:05
91 lines
2008 bytes
2008 bytes
System: G++ 1.27.0
Hardware: Sun 3/50
OS: SunOS 3.5
Configuration: tm-sun3.h
Symptoms:
The constructor of a derived class calls itself instead of the
constructor of its base class.
Script:
==================================
Script started on Mon Oct 24 10:50:02 1988
gecrux% cat junk.cc
class B {
unsigned x;
public:
B () { x = 1;}
~B () { if (--x > 0) { this = 0;}}
};
class D : public B {
public:
D();
~D();
private:
int y;
};
D::D () {
y = 0;
}
gecrux% g++ -v -O -S junk.cc
g++ version 1.27.0
/usr/local/lib/gcc-cpp+ -v -undef -D__GNU__ -D__GNUG__ -Dmc68000 -Dsun -Dunix -D__OPTIMIZE__ junk.cc /tmp/cca02607.cpp
GNU CPP version 1.27.0
/usr/local/lib/gcc-c++ /tmp/cca02607.cpp -quiet -dumpbase junk.cc -opt -version -o junk.s
GNU C++ version 1.27.0 (68k, MIT syntax) compiled by GNU C version 1.28.
gecrux% cat junk.s
#NO_APP
.text
.even
_B_PSB:
link a6,#0
movel a6@(8),a0
tstl a0
jne L2
pea 4:w
jbsr ___builtin_new
movel d0,a0
L2:
moveq #1,d1
movel d1,a0@
movel a0,d0
unlk a6
rts
.even
__$_B:
link a6,#0
movel a6@(8),a0
tstl a0
jeq L6
subql #1,a0@
L6:
unlk a6
rts
.even
.globl _D_PSD
_D_PSD:
link a6,#0
movel a6@(8),a0
tstl a0
jne L8
pea 8:w
jbsr ___builtin_new
movel d0,a0
addqw #4,sp
L8:
movel a0,sp@-
jbsr _D_PSD ;;; <--- This should be _B_PSB
movel d0,a0
clrl a0@(4)
unlk a6
rts
gecrux% ^D
script done on Mon Oct 24 10:50:40 1988
---
--
Clark Cooper cooper@gecrux.steinmetz.ge.com, coopercc@crd.ge.com,
coopercc@ge-crd.arpa, ...!uunet!steinmetz!cooper
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