Thread View: gnu.gcc.bug
1 messages
1 total messages
Started by Karl Berry
Tue, 11 Aug 1992 09:01
bad IBM RT assembly code produced
Author: Karl Berry
Date: Tue, 11 Aug 1992 09:01
Date: Tue, 11 Aug 1992 09:01
1110 lines
15898 bytes
15898 bytes
GCC 2.2.2, on the (preprocessed) input file below, on an IBM RT running
4.3 BSD configured as `romp-aos', produces bad assembly code, as
illustrated in the log from gcc -v. I include the assembly code after
the source and a form feed.
I presume GCC should still diagnose an error (constant too large or some
such).
For your information, changing the floating-point constant in the source
from ...e+308 to ...e+307 and ...e-308 to ...e-307 makes the problem go
away.
Also, the line numbers the assembler reports don't seem to correlate
with anything, but seaching for `inf' will at least find one of the
problems.
karl@cs.umb.edu
gcc -v -g bad.i
gcc version 2.2.2
/usr/local/gnu/lib/gcc-lib/romp-aos/2.2.2/cc1 bad.i -quiet -g -version -o /tmp/cc001351.s
GNU C version 2.2.2 compiled by GNU C version 2.2.1.
as -o bad.o /tmp/cc001351.s
Assembler:
"/tmp/cc001351.s", line 256: Badly formatted floating point number.
"/tmp/cc001351.s", line 256: Badly formatted floating point number.
"/tmp/cc001351.s", line 442: "INF" is not followed by a ':' for a label definition
"/tmp/cc001351.s", line 558: "INF" is not followed by a ':' for a label definition
gcc: bad.o: No such file or directory
# 1 "bad.c"
# 1 "/usr/include/errno.h" 1 3
# 1 "/usr/include/sys/nfs_defines.h" 1 3
# 15 "/usr/include/errno.h" 2 3
# 19 "bad.c" 2
# 1 "/usr/include/ctype.h" 1 3
extern char _ctype_[];
# 20 "bad.c" 2
# 1 "/usr/include/math.h" 1 3
extern double asinh(), acosh(), atanh();
extern double erf(), erfc();
extern double fabs(), floor(), ceil();
extern double modf(), ldexp(), frexp(), atof();
extern double sqrt(), cbrt();
extern double sin(), cos(), tan(), asin(), acos(), atan(), atan2();
extern double expm1(), log1p(), exp(), log(), log10(), pow();
extern double sinh(), cosh(), tanh();
extern double hypot(), cabs(), lgamma();
extern double j0(), j1(), jn(), y0(), y1(), yn();
# 21 "bad.c" 2
extern int errno;
double
strtod (nptr, endptr)
char *nptr;
char **endptr;
{
register char *s;
short int sign;
double num;
int got_dot;
int got_digit;
long int exponent;
if (nptr == 0 )
{
errno = 22 ;
goto noconv;
}
s = nptr;
while (((_ctype_+1)[*s]&010 ) )
++s;
sign = *s == '-' ? -1 : 1;
if (*s == '-' || *s == '+')
++s;
num = 0.0;
got_dot = 0;
got_digit = 0;
exponent = 0;
for (;; ++s)
{
if (((_ctype_+1)[*s]&04 ) )
{
got_digit = 1;
if (num > 1.7976931348623167e+308 * 0.1)
++exponent;
else
num = (num * 10.0) + (*s - '0');
if (got_dot)
--exponent;
}
else if (!got_dot && *s == '.')
got_dot = 1;
else
break;
}
if (!got_digit)
goto noconv;
if (((*s)-'A'+'a') == 'e')
{
int save = errno;
char *end;
long int exp;
errno = 0;
++s;
exp = strtol (s, &end, 10);
if (errno == 34 )
{
if (endptr != 0 )
*endptr = end;
if (exp < 0)
goto underflow;
else
goto overflow;
}
else if (end == s)
end = (char *) s - 1;
errno = save;
s = end;
exponent += exp;
}
if (endptr != 0 )
*endptr = (char *) s;
if (num == 0.0)
return 0.0;
if (exponent < 0)
{
if (num < 2.2250738585072010e-308 * pow (10.0, (double) -exponent))
goto underflow;
}
else if (exponent > 0)
{
if (num > 1.7976931348623167e+308 * pow (10.0, (double) -exponent))
goto overflow;
}
num *= pow (10.0, (double) exponent);
return num * sign;
overflow:
errno = 34 ;
return 1.7976931348623158e308 * sign;
underflow:
if (endptr != 0 )
*endptr = (char *) nptr;
errno = 34 ;
return 0.0;
noconv:
if (endptr != 0 )
*endptr = (char *) nptr;
return 0.0;
}
.globl .oVncs
.set .oVncs,0
.globl .oVgcc2.2.2
.set .oVgcc2.2.2,0
gcc2_compiled.:
.stabs "/usr/local/src/gnu/shellutils-1.6/lib/",100,0,0,Ltext0
.stabs "bad.c",100,0,0,Ltext0
.text
Ltext0:
.stabs "int:t1=r1;-2147483648;2147483647;",128,0,0,0
.stabs "char:t2=r1;0;255;",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
.data
.align 2
_strtod:
.long _.strtod, 0, 0
.align 2
LC0:
.double 0d0.00000000000000000000e+00
.align 2
LC1:
.long _strtol
.align 2
LC2:
.double 0d1.00000000000000000000e+01
.align 2
LC3:
.long _pow
.text
.align 1
.globl _strtod
.globl _.strtod
_.strtod:
.stabd 68,0,43
stm r11,-56(r1)
cas r14,r0,r0
cal r13,-192(r1)
cal r1,-164(r1)
cal r15,36(r14)
balr r15,r15
st r2,176(r13)
st r3,180(r13)
.stabd 68,0,44
LBB2:
.stabd 68,0,56
l r0,176(r13)
cis r0,0
bne L2
.stabd 68,0,58
cal r0,22(r0)
store r0,_errno,r11
.stabd 68,0,59
b L3
L2:
.stabd 68,0,62
l r12,176(r13)
.stabd 68,0,65
L4:
lcs r0,0(r12)
nilz r4,r0,255
loadc r3,__ctype_+1(r4)
nilz r0,r3,8
nilz r4,r0,255
cis r4,0
beq L5
.stabd 68,0,66
ais r12,1
b L4
L5:
.stabd 68,0,69
lcs r4,0(r12)
nilz r0,r4,255
cil r0,45
bne L6
cal r0,65535(r0)
b L7
L6:
lis r0,1
L7:
sth r0,62(r13)
.stabd 68,0,70
lcs r4,0(r12)
nilz r0,r4,255
cil r0,45
beq L9
lcs r4,0(r12)
nilz r0,r4,255
cil r0,43
beq L9
b L8
L9:
.stabd 68,0,71
ais r12,1
L8:
.stabd 68,0,73
l r0,16(r14)
sts r0,56(r13)
ls r0,12(r14)
sts r0,52(r13)
.stabd 68,0,74
lis r0,0
sts r0,48(r13)
.stabd 68,0,75
lis r0,0
sts r0,44(r13)
.stabd 68,0,76
lis r0,0
sts r0,40(r13)
L10:
.stabd 68,0,79
lcs r0,0(r12)
nilz r4,r0,255
loadc r3,__ctype_+1(r4)
nilz r0,r3,4
nilz r4,r0,255
cis r4,0
beq L13
.stabd 68,0,81
lis r0,1
sts r0,44(r13)
.stabd 68,0,84
cal r15,88(r14)
balr r15,r15
ble L14
.stabd 68,0,92
ls r0,40(r13)
ail r4,r0,1
sts r4,40(r13)
b L15
L14:
.stabd 68,0,94
cal r15,320(r14)
balr r15,r15
lcs r0,0(r12)
nilz r4,r0,255
ail r3,r4,-48
cal r15,424(r14)
balr r15,r15
cal r15,508(r14)
balr r15,r15
L15:
.stabd 68,0,98
ls r0,48(r13)
cis r0,0
beq L16
.stabd 68,0,99
ls r0,40(r13)
ail r4,r0,-1
sts r4,40(r13)
L16:
.stabd 68,0,100
b L17
L13:
.stabd 68,0,101
ls r0,48(r13)
cis r0,0
bne L18
lcs r4,0(r12)
nilz r0,r4,255
cil r0,46
bne L18
.stabd 68,0,103
lis r0,1
sts r0,48(r13)
b L19
L18:
.stabd 68,0,106
b L11
L19:
L17:
.stabd 68,0,107
.stabd 68,0,77
L12:
ais r12,1
b L10
L11:
.stabd 68,0,109
ls r0,44(r13)
cis r0,0
bne L20
.stabd 68,0,110
b L3
L20:
.stabd 68,0,112
lcs r4,0(r12)
nilz r0,r4,255
ail r4,r0,32
cil r4,101
bne L21
.stabd 68,0,115
LBB3:
load r4,_errno
sts r4,36(r13)
.stabd 68,0,119
lis r0,0
store r0,_errno,r11
.stabd 68,0,120
ais r12,1
.stabd 68,0,121
ail r0,r13,32
cas r2,r12,r0
cas r3,r0,r0
lis r4,10
ls r5,20(r14)
cas r0,r5,r0
bali r15,_.strtol
sts r2,28(r13)
.stabd 68,0,122
load r4,_errno
cil r4,34
bne L22
.stabd 68,0,127
l r0,180(r13)
cis r0,0
beq L23
.stabd 68,0,128
l r4,180(r13)
ls r0,32(r13)
sts r0,0(r4)
L23:
.stabd 68,0,129
ls r0,28(r13)
cis r0,0
bhe L24
.stabd 68,0,130
b L25
b L26
L24:
.stabd 68,0,132
b L27
L26:
.stabd 68,0,133
b L28
L22:
.stabd 68,0,134
ls r0,32(r13)
c r0,r12
bne L29
.stabd 68,0,137
ail r0,r12,-1
sts r0,32(r13)
L29:
L28:
.stabd 68,0,138
ls r0,36(r13)
store r0,_errno,r11
.stabd 68,0,139
ls r12,32(r13)
.stabd 68,0,140
ls r0,40(r13)
ls r4,28(r13)
a r0,r4
sts r0,40(r13)
.stabd 68,0,141
LBE3:
L21:
.stabd 68,0,143
l r0,180(r13)
cis r0,0
beq L30
.stabd 68,0,144
l r4,180(r13)
sts r12,0(r4)
L30:
.stabd 68,0,146
cal r15,580(r14)
balr r15,r15
bne L31
.stabd 68,0,147
l r3,16(r14)
ls r2,12(r14)
b L1
L31:
.stabd 68,0,152
ls r0,40(r13)
cis r0,0
bhe L32
.stabd 68,0,154
ls r3,40(r13)
twoc r4,r3
cal r15,780(r14)
balr r15,r15
l r3,28(r14)
ls r2,24(r14)
cal r15,864(r14)
balr r15,r15
ls r15,32(r14)
cas r0,r15,r0
bali r15,_.pow
cal r15,1000(r14)
balr r15,r15
cal r15,1072(r14)
balr r15,r15
cal r15,1144(r14)
balr r15,r15
bhe L33
.stabd 68,0,155
b L25
L33:
.stabd 68,0,156
b L34
L32:
.stabd 68,0,157
ls r0,40(r13)
cis r0,0
ble L35
.stabd 68,0,159
ls r3,40(r13)
twoc r4,r3
cal r15,780(r14)
balr r15,r15
l r3,28(r14)
ls r2,24(r14)
cal r15,864(r14)
balr r15,r15
ls r15,32(r14)
cas r0,r15,r0
bali r15,_.pow
cal r15,1000(r14)
balr r15,r15
cal r15,1344(r14)
balr r15,r15
cal r15,1144(r14)
balr r15,r15
ble L36
.stabd 68,0,160
b L27
L36:
L35:
L34:
.stabd 68,0,163
cal r15,1416(r14)
balr r15,r15
l r3,28(r14)
ls r2,24(r14)
cal r15,864(r14)
balr r15,r15
ls r15,32(r14)
cas r0,r15,r0
bali r15,_.pow
cal r15,1000(r14)
balr r15,r15
cal r15,1500(r14)
balr r15,r15
.stabd 68,0,165
lh r3,62(r13)
exts r4,r3
cal r15,780(r14)
balr r15,r15
cal r15,1572(r14)
balr r15,r15
b L1
L27:
.stabd 68,0,169
cal r0,34(r0)
store r0,_errno,r11
.stabd 68,0,170
lh r3,62(r13)
exts r4,r3
cal r15,780(r14)
balr r15,r15
cal r15,1740(r14)
balr r15,r15
b L1
L25:
.stabd 68,0,174
l r0,180(r13)
cis r0,0
beq L37
.stabd 68,0,175
l r4,180(r13)
l r0,176(r13)
sts r0,0(r4)
L37:
.stabd 68,0,176
cal r0,34(r0)
store r0,_errno,r11
.stabd 68,0,177
l r3,16(r14)
ls r2,12(r14)
b L1
L3:
.stabd 68,0,181
l r0,180(r13)
cis r0,0
beq L38
.stabd 68,0,182
l r4,180(r13)
l r0,176(r13)
sts r0,0(r4)
L38:
.stabd 68,0,183
l r3,16(r14)
ls r2,12(r14)
b L1
.stabd 68,0,184
LBE2:
.stabd 68,0,184
L1:
cal r15,1908(r14)
balr r15,r15
lm r11,108(r1)
brx r15
cal r1,164(r1)
.long 0xdf07dfb8
.byte 0x2d, 53
.data
.align 2
# data area offset = 36
cas r0,r15,r0
.long FPGLUE
.byte 0x1d # STOREM
.byte 2
.short 0x8001
.byte 52, 0x80
.byte 0xff,0x20 # (int) $
.byte 0x30,0x1 # (int) 36(r1)
.long 36
.space 32
# data area offset = 88
cas r0,r15,r0
.long FPGLUE
.byte 0x08 # CMPT
.byte 2
.short 0x8001
.byte 232, 0x80
.byte 0x33,0xd # (double) 52(r13)
.byte 0x23,0x0 # (double) $
.long 52
.double 0dINF
.space 204
# data area offset = 320
cas r0,r15,r0
.long FPGLUE
.byte 0x15 # MUL
.byte 3
.short 0x8001
.byte 104, 0x80
.byte 0x13,0x1 # (double) fr1
.byte 0x33,0xd # (double) 52(r13)
.byte 0x23,0x0 # (double) $
.space 2
.long 52
.double 0d1.00000000000000000000e+01
.space 72
# data area offset = 424
cas r0,r15,r0
.long FPGLUE
.byte 0x14 # MOVE
.byte 2
.short 0x8001
.byte 84, 0x80
.byte 0x13,0x2 # (double) fr2
.byte 0x0,0x3 # (int) r3
.space 68
# data area offset = 508
cas r0,r15,r0
.long FPGLUE
.byte 0x02 # ADD
.byte 3
.short 0x8001
.byte 72, 0x80
.byte 0x33,0xd # (double) 52(r13)
.byte 0x13,0x1 # (double) fr1
.byte 0x13,0x2 # (double) fr2
.space 2
.long 52
.space 48
# data area offset = 580
cas r0,r15,r0
.long FPGLUE
.byte 0x07 # CMP
.byte 2
.short 0x8001
.byte 200, 0x80
.byte 0x33,0xd # (double) 52(r13)
.byte 0x23,0x0 # (double) $
.long 52
.double 0d0.00000000000000000000e+00
.space 172
# data area offset = 780
cas r0,r15,r0
.long FPGLUE
.byte 0x14 # MOVE
.byte 2
.short 0x8001
.byte 84, 0x80
.byte 0x13,0x1 # (double) fr1
.byte 0x0,0x4 # (int) r4
.space 68
# data area offset = 864
cas r0,r15,r0
.long FPGLUE
.byte 0x14 # MOVE
.byte 2
.short 0x8001
.byte 136, 0x80
.byte 0x3,0x45 # (double) r4
.byte 0x13,0x1 # (double) fr1
.space 120
# data area offset = 1000
cas r0,r15,r0
.long FPGLUE
.byte 0x14 # MOVE
.byte 2
.short 0x8001
.byte 72, 0x80
.byte 0x13,0x1 # (double) fr1
.byte 0x3,0x23 # (double) r2
.space 56
# data area offset = 1072
cas r0,r15,r0
.long FPGLUE
.byte 0x15 # MUL
.byte 3
.short 0x8001
.byte 72, 0x80
.byte 0x13,0x2 # (double) fr2
.byte 0x13,0x1 # (double) fr1
.byte 0x23,0x0 # (double) $
.space 2
.double 0d2.22507385850720100000e-308
.space 44
# data area offset = 1144
cas r0,r15,r0
.long FPGLUE
.byte 0x08 # CMPT
.byte 2
.short 0x8001
.byte 200, 0x80
.byte 0x33,0xd # (double) 52(r13)
.byte 0x13,0x2 # (double) fr2
.long 52
.space 180
# data area offset = 1344
cas r0,r15,r0
.long FPGLUE
.byte 0x15 # MUL
.byte 3
.short 0x8001
.byte 72, 0x80
.byte 0x13,0x2 # (double) fr2
.byte 0x13,0x1 # (double) fr1
.byte 0x23,0x0 # (double) $
.space 2
.double 0dINF
.space 44
# data area offset = 1416
cas r0,r15,r0
.long FPGLUE
.byte 0x14 # MOVE
.byte 2
.short 0x8001
.byte 84, 0x80
.byte 0x13,0x1 # (double) fr1
.byte 0x30,0xd # (int) 40(r13)
.long 40
.space 64
# data area offset = 1500
cas r0,r15,r0
.long FPGLUE
.byte 0x15 # MUL
.byte 2
.short 0x8001
.byte 72, 0x80
.byte 0x33,0xd # (double) 52(r13)
.byte 0x13,0x1 # (double) fr1
.long 52
.space 52
# data area offset = 1572
cas r0,r15,r0
.long FPGLUE
.byte 0x15 # MUL
.byte 3
.short 0x8001
.byte 168, 0x80
.byte 0x3,0x23 # (double) r2
.byte 0x13,0x1 # (double) fr1
.byte 0x33,0xd # (double) 52(r13)
.space 2
.long 52
.space 144
# data area offset = 1740
cas r0,r15,r0
.long FPGLUE
.byte 0x15 # MUL
.byte 3
.short 0x8001
.byte 168, 0x80
.byte 0x3,0x23 # (double) r2
.byte 0x13,0x1 # (double) fr1
.byte 0x23,0x0 # (double) $
.space 2
.double 0d1.79769313486231580000e+308
.space 140
# data area offset = 1908
cas r0,r15,r0
.long FPGLUE
.byte 0x0f # LOADM
.byte 2
.short 0x8001
.byte 52, 0x80
.byte 0xff,0x20 # (int) $
.byte 0x30,0x1 # (int) 36(r1)
.long 36
.space 32
.text
.stabs "strtod:F13",36,0,0,_strtod
.stabs "nptr:p16=*2",160,0,0,176
.stabs "endptr:p17=*16",160,0,0,180
.stabs "s:r16",64,0,0,12
.stabs "sign:6",128,0,0,62
.stabs "num:13",128,0,0,52
.stabs "got_dot:1",128,0,0,48
.stabs "got_digit:1",128,0,0,44
.stabs "exponent:3",128,0,0,40
.stabn 192,0,0,LBB2
.stabs "save:1",128,0,0,36
.stabs "end:16",128,0,0,32
.stabs "exp:3",128,0,0,28
.stabn 192,0,0,LBB3
.stabn 224,0,0,LBE3
.stabn 224,0,0,LBE2
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