Article View: gnu.gcc.bug
Article #1519bug for 2.3.3
From: Oran Singer
Date: Sat, 02 Jan 1993 18:14
Date: Sat, 02 Jan 1993 18:14
458 lines
7354 bytes
7354 bytes
I am running g++ v.2.3.3 on a sparc with 4.1.2. The following code worked
fine on 2.1, and now the assembler bombs on a redefinition of _try. It was
compiled simply with g++. What follows is the -S output for 2.1 and 2.3.3,
showing the bug in mangling _try correctly, and the output of -g -S for
2.3.3. (If this helps, the problem goes away under certain circumstances if
the function is a friend of some class).
template<class T, class RW_T> T try(T dummy, RW_T dd, int i)
{
return dummy;
}
void f()
{
int i,j;
char c;
int k=try(i,c,j);
}
void g()
{
int i,j;
char c;
char k=try(c,i,j);
}
main()
{
f(); g();
}
for g++ v2.1:
gcc2_compiled.:
.text
.align 4
.global _f__Fv
.proc 1
_f__Fv:
!#PROLOGUE# 0
save %sp,-128,%sp
!#PROLOGUE# 1
ldub [%fp-25],%o0
sll %o0,24,%o2
sra %o2,24,%o1
ld [%fp-20],%o0
ld [%fp-24],%o2
call _try__Fici,0
nop
st %o0,[%fp-32]
b,a L2
b,a L1
L2:
L1:
ret
restore
.align 4
.global _g__Fv
.proc 1
_g__Fv:
!#PROLOGUE# 0
save %sp,-128,%sp
!#PROLOGUE# 1
ldub [%fp-25],%o0
sll %o0,24,%o2
sra %o2,24,%o1
mov %o1,%o0
ld [%fp-20],%o1
ld [%fp-24],%o2
call _try__Fcii,0
nop
stb %o0,[%fp-26]
b,a L4
b,a L3
L4:
L3:
ret
restore
.align 4
.global _main
.proc 1
_main:
!#PROLOGUE# 0
save %sp,-136,%sp
!#PROLOGUE# 1
call ___main,0
nop
call _f__Fv,0
nop
call _g__Fv,0
nop
mov 0,%i0
b,a L5
b,a L5
L5:
ret
restore
.align 4
.proc 1
_try__Fcii:
!#PROLOGUE# 0
save %sp,-112,%sp
!#PROLOGUE# 1
stb %i0,[%fp+71]
st %i1,[%fp+72]
st %i2,[%fp+76]
ldub [%fp+71],%o0
sll %o0,24,%o1
sra %o1,24,%i0
b,a L6
b,a L6
b,a L7
b,a L6
L7:
L6:
ret
restore
.align 4
.proc 1
_try__Fici:
!#PROLOGUE# 0
save %sp,-112,%sp
!#PROLOGUE# 1
st %i0,[%fp+68]
stb %i1,[%fp+75]
st %i2,[%fp+76]
ld [%fp+68],%i0
b,a L8
b,a L8
L8:
ret
restore
///////////////////////////////////////////////////
and for g++ 2.3.3:
gcc2_compiled.:
.text
.align 4
.global _f__Fv
.proc 020
_f__Fv:
!#PROLOGUE# 0
save %sp,-128,%sp
!#PROLOGUE# 1
ldub [%fp-25],%o0
sll %o0,24,%o2
sra %o2,24,%o1
ld [%fp-20],%o0
ld [%fp-24],%o2
call _try,0
nop
st %o0,[%fp-32]
b L2
nop
b L1
nop
L2:
L1:
ret
restore
.align 4
.global _g__Fv
.proc 020
_g__Fv:
!#PROLOGUE# 0
save %sp,-128,%sp
!#PROLOGUE# 1
ldub [%fp-25],%o0
sll %o0,24,%o2
sra %o2,24,%o1
mov %o1,%o0
ld [%fp-20],%o1
ld [%fp-24],%o2
call _try,0
nop
stb %o0,[%fp-26]
b L4
nop
b L3
nop
L4:
L3:
ret
restore
.align 4
.global _main
.proc 04
_main:
!#PROLOGUE# 0
save %sp,-136,%sp
!#PROLOGUE# 1
call ___main,0
nop
call _f__Fv,0
nop
call _g__Fv,0
nop
mov 0,%i0
b L5
nop
b L5
nop
L5:
ret
restore
.align 4
.proc 04
_try:
!#PROLOGUE# 0
save %sp,-112,%sp
!#PROLOGUE# 1
stb %i0,[%fp+71]
st %i1,[%fp+72]
st %i2,[%fp+76]
ldub [%fp+71],%o0
sll %o0,24,%o1
sra %o1,24,%i0
b L6
nop
b L6
nop
b L7
nop
b L6
nop
L7:
L6:
ret
restore
.align 4
.proc 04
_try:
!#PROLOGUE# 0
save %sp,-112,%sp
!#PROLOGUE# 1
st %i0,[%fp+68]
stb %i1,[%fp+75]
st %i2,[%fp+76]
ld [%fp+68],%i0
b L8
nop
b L8
nop
L8:
ret
restore
/////////////////////////////////////////////////
-g for 2.3.3:
gcc2_compiled.:
.stabs "/users/mafia/oran/imagex/",100,0,0,Ltext0
.stabs "gnubug.c",100,0,0,Ltext0
.text
Ltext0:
.stabs "int:t1=r1;-2147483648;2147483647;",128,0,0,0
.stabs "char:t2=r2;0;127;",128,0,0,0
.stabs "long int:t3=r1;-2147483648;2147483647;",128,0,0,0
.stabs "unsigned int:t4=r1;0;-1;",128,0,0,0
.stabs "long unsigned int:t5=r1;0;-1;",128,0,0,0
.stabs "short int:t6=r1;-32768;32767;",128,0,0,0
.stabs "long long int:t7=r1;0;-1;",128,0,0,0
.stabs "short unsigned int:t8=r1;0;65535;",128,0,0,0
.stabs "long long unsigned int:t9=r1;0;-1;",128,0,0,0
.stabs "signed char:t10=r1;-128;127;",128,0,0,0
.stabs "unsigned char:t11=r1;0;255;",128,0,0,0
.stabs "float:t12=r1;4;0;",128,0,0,0
.stabs "double:t13=r1;8;0;",128,0,0,0
.stabs "long double:t14=r1;8;0;",128,0,0,0
.stabs "void:t15=15",128,0,0,0
.stabs "unknown type:t16=16",128,0,0,0
.stabs "__wchar_t:t17=r1;0;65535;",128,0,0,0
.stabs "$vtbl_ptr_type:T18=s8delta:6,0,16;index:6,16,16;pfn:19=*15,32,32;delta2:6,32,16;;",128,0,0,0
.stabs "$vtbl_ptr_type:t18",128,0,0,0
.align 4
.global _f__Fv
.proc 020
_f__Fv:
.stabn 68,0,8,LM1
LM1:
!#PROLOGUE# 0
save %sp,-128,%sp
!#PROLOGUE# 1
.stabn 68,0,9,LM2
LM2:
LBB2:
.stabn 68,0,11,LM3
LM3:
ldub [%fp-25],%o0
sll %o0,24,%o2
sra %o2,24,%o1
ld [%fp-20],%o0
ld [%fp-24],%o2
call _try,0
nop
st %o0,[%fp-32]
LBE2:
b L2
nop
b L1
nop
L2:
.stabn 68,0,12,LM4
LM4:
L1:
ret
restore
.stabs "f__Fv:F15",36,0,0,_f__Fv
.stabs "i:1",128,0,0,-20
.stabs "j:1",128,0,0,-24
.stabs "c:2",128,0,0,-25
.stabs "k:1",128,0,0,-32
.stabn 192,0,0,LBB2
.stabn 224,0,0,LBE2
.align 4
.global _g__Fv
.proc 020
_g__Fv:
.stabn 68,0,15,LM5
LM5:
!#PROLOGUE# 0
save %sp,-128,%sp
!#PROLOGUE# 1
.stabn 68,0,16,LM6
LM6:
LBB3:
.stabn 68,0,18,LM7
LM7:
ldub [%fp-25],%o0
sll %o0,24,%o2
sra %o2,24,%o1
mov %o1,%o0
ld [%fp-20],%o1
ld [%fp-24],%o2
call _try,0
nop
stb %o0,[%fp-26]
LBE3:
b L4
nop
b L3
nop
L4:
.stabn 68,0,19,LM8
LM8:
L3:
ret
restore
.stabs "g__Fv:F15",36,0,0,_g__Fv
.stabs "i:1",128,0,0,-20
.stabs "j:1",128,0,0,-24
.stabs "c:2",128,0,0,-25
.stabs "k:2",128,0,0,-26
.stabn 192,0,0,LBB3
.stabn 224,0,0,LBE3
.align 4
.global _main
.proc 04
_main:
.stabn 68,0,22,LM9
LM9:
!#PROLOGUE# 0
save %sp,-136,%sp
!#PROLOGUE# 1
call ___main,0
nop
.stabn 68,0,23,LM10
LM10:
call _f__Fv,0
nop
call _g__Fv,0
nop
mov 0,%i0
b L5
nop
b L5
nop
.stabn 68,0,24,LM11
LM11:
L5:
ret
restore
.stabs "main:F1",36,0,0,_main
.align 4
.proc 04
_try:
.stabn 68,0,3,LM12
LM12:
!#PROLOGUE# 0
save %sp,-112,%sp
!#PROLOGUE# 1
stb %i0,[%fp+71]
st %i1,[%fp+72]
st %i2,[%fp+76]
.stabn 68,0,4,LM13
LM13:
ldub [%fp+71],%o0
sll %o0,24,%o1
sra %o1,24,%i0
b L6
nop
b L6
nop
b L7
nop
b L6
nop
L7:
.stabn 68,0,5,LM14
LM14:
L6:
ret
restore
.stabs "try:f2",36,0,0,_try
.stabs "dummy:p2",160,0,0,71
.stabs "dd:p1",160,0,0,72
.stabs "i:p1",160,0,0,76
.align 4
.proc 04
_try:
.stabn 68,0,3,LM15
LM15:
!#PROLOGUE# 0
save %sp,-112,%sp
!#PROLOGUE# 1
st %i0,[%fp+68]
stb %i1,[%fp+75]
st %i2,[%fp+76]
.stabn 68,0,4,LM16
LM16:
ld [%fp+68],%i0
b L8
nop
b L8
nop
.stabn 68,0,5,LM17
LM17:
L8:
ret
restore
.stabs "try:f1",36,0,0,_try
.stabs "dummy:p1",160,0,0,68
.stabs "dd:p2",160,0,0,75
.stabs "i:p1",160,0,0,76
Oran
Oran Singer Computer Science Lab
oran@Math.Tau.Ac.IL School of Mathematics
oran@Taurus.BITNET Tel Aviv University
Technical Details
Message-ID:
<9301021614.AA17284@math.tau.ac.il>Path:
arc1-ca.pugleaf.net!sparky!uunet!wupost!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!ai.mit.edu!oranShow Full Headers
Complete Article Headers
Newsgroups: gnu.gcc.bug Path: arc1-ca.pugleaf.net!sparky!uunet!wupost!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!ai.mit.edu!oran From: oran@ai.mit.edu (Oran Singer) Subject: bug for 2.3.3 Message-ID: <9301021614.AA17284@math.tau.ac.il> Sender: gnulists@ai.mit.edu Organization: GNUs Not Usenet Distribution: gnu Date: Sat, 2 Jan 1993 18:14:55 GMT Approved: bug-gcc@prep.ai.mit.edu Lines: 459