19990328 snapshot has problem loading FP constant on sparc
Brad Lucier
lucier@math.purdue.edu
Wed Mar 31 23:54:00 GMT 1999
I read "How to submit a bug report" in the FAQ, and will try to include
the information requested there.
Here is crap.c:
extern double cos(double);
extern double sin(double);
extern double atan(double);
static long ___lp;
typedef int jmp_buf[12 ];
typedef struct ___jmpbuf_struct
{
jmp_buf buf;
} ___jmpbuf_struct;
typedef struct ___processor_state_struct
{
long *stack,
*stack_base,
*stack_limit,
*stack_trip,
*stack_break,
*fp;
long *heap,
*heap_limit,
*hp;
long r[20],
pc,
temp1,
temp2,
temp3,
temp4;
int na,
np;
int intr_enabled,
intr_flag[3];
long glo_list_head,
glo_list_tail;
long handler_break,
handler_stack_limit,
handler_heap_limit, handler_not_proc,
handler_not_proc_glo, handler_wrong_nargs,
handler_get_rest, handler_get_key,
handler_get_key_rest, handler_force,
handler_clam_conv_error, handler_cdef_conv_error,
handler_return_to_c, initial_continuation;
long executable_wills,
non_executable_wills;
___jmpbuf_struct *catcher;
} ___processor_state_struct, *___processor_state;
static long ___H_makect(___processor_state ___ps)
{
register long ___pc,
___temp;
register unsigned long long ___temp64;
register long ___start = ___lp + ((28) * 4 * (1 << 2));
register long *___hp;
register long *___fp;
register long ___r0;
register long ___r1;
register long ___r2;
register long ___r3;
register long ___r4;
register long ___r5;
register long ___r7;
double ___F64R1;
double ___F64R4;
double ___F64R5;
double ___F64R6;
double ___F64R7;
___hp = ___ps->hp;
___fp = ___ps->fp;
___r0 = ___ps->r[0];
___r1 = ___ps->r[1];
___r2 = ___ps->r[2];
___r3 = ___ps->r[3];
___r4 = ___ps->r[4];
___r5 = ___ps->r[5];
___r7 = ___ps->r[7];
___pc = ___ps->pc;
___jump:switch ((___pc -= ___start) / (4 * (1 << 2)))
{
case 28 - 28 + 0:
___L0_makect:
if (___ps->na == 3)
{
}
else
{
___ps->temp1 = ___start + ((28 - 28 + 0) * 4 * (1 << 2));
{
___pc = ___ps->handler_wrong_nargs;
goto ___jumpext;
}
}
___L_makect:
*(long *) (((long) (((long *) (___r2 - 1)) + 1)) + ((((long) (1L) << 2)) << (2 - 2))) = ___r1;
if (!(___r1 > ((long) (1L) << 2)))
{
goto ___L3_makect;
}
___r2 = (((___r1 >> (((long) (1L) << 2) >> 2)) & ~((1 << 2) - 1)));
___F64R4 = (___r2 >> 2);
___F64R5 = atan(1.);
___F64R4 = (___F64R5 / ___F64R4);
___F64R5 = (___r2 >> 2);
___F64R5 = (___F64R4 * ___F64R5);
___F64R5 = cos(___F64R5);
*(double *) (((long) (((long *) (___r3 - 1)) + 1)) + ((((long) (0L) << 2)) << (3 - 2))) = ___F64R5;
___F64R5 = *(double *) (((long) (((long *) (___r3 - 1)) + 1)) + ((((long) (0L) << 2)) << (3 - 2)));
___F64R5 = (.5 * ___F64R5);
*(double *) (((long) (((long *) (___r3 - 1)) + 1)) + ((___r2) << (3 - 2))) = ___F64R5;
___r4 = ((___hp += 2 + 2, ((long) ___hp & 7) == 0 ? (*(___hp - 2 - 1) = (((2 << 2) << (3 + 5)) + (30 << 3) + 0), *(double *) ((___hp - 2 - 1) + 1) = ___F64R4, ((long) (___hp - 2 - 1) + 1)) : (*(___hp - 2 - 2) = (((2 << 2) << (3 + 5)) + (30 << 3) + 0), *(double *) ((___hp - 2 - 2) + 1) = ___F64R4, ((long) (___hp - 2 - 2) + 1))));
___fp[-(1)] = (___r4);
___r4 = (___r3);
___r3 = (___r2);
___r2 = (___r1);
___r1 = (___fp[-(1)]);
___r5 = (((long) (1L) << 2));
if (___hp > ___ps->heap_limit)
{
___ps->temp1 = ___start + ((28 - 28 + 1) * 4 * (1 << 2));
{
___pc = ___ps->handler_heap_limit;
goto ___jumpext;
}
}
case 28 - 28 + 1:
___L1_makect:
if ((___r5 == ___r3))
{
goto ___L3_makect;
}
___L2_makect:
___F64R6 = (___r5 >> 2);
___F64R1 = (*(double *) ((((long *) (___r1 - 1)) + 1)));
___F64R6 = (___F64R1 * ___F64R6);
___F64R7 = cos(___F64R6);
___F64R7 = (.5 * ___F64R7);
*(double *) (((long) (((long *) (___r4 - 1)) + 1)) + ((___r5) << (3 - 2))) = ___F64R7;
___r7 = (((long) (___r2 - ___r5)));
___F64R6 = sin(___F64R6);
___F64R6 = (.5 * ___F64R6);
*(double *) (((long) (((long *) (___r4 - 1)) + 1)) + ((___r7) << (3 - 2))) = ___F64R6;
___r5 = (((long) (___r5 + ((long) (1L) << 2))));
if (!(___r5 == ___r3))
{
goto ___L2_makect;
}
___L3_makect:
___r1 = ((((long) -5 << 2) + 2));
{
___pc = ___r0;
goto ___jump;
}
} ___pc += ___start;
___jumpext:
___ps->pc = ___pc;
___ps->hp = ___hp;
___ps->r[1] = ___r1;
___ps->r[2] = ___r2;
___ps->r[3] = ___r3;
___ps->r[4] = ___r4;
___ps->r[5] = ___r5;
___ps->r[7] = ___r7;
return ___pc;
}
and the compile command, with the output:
bessel-112% /opt/egcs-19990328/bin/gcc -v --save-temps -g -fPIC -O1 -mcpu=supersparc -mtune=ultrasparc -c crap.c
Reading specs from /opt/egcs-19990328/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.93.14/specs
gcc version egcs-2.93.14 19990328 (gcc2 ss-980929 experimental)
/opt/egcs-19990328/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.93.14/cpp -lang-c -v -undef -D__GNUC__=2 -D__GNUC_MINOR__=93 -Dsparc -Dsun -Dunix -D__svr4__ -D__SVR4 -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__sparc -D__sun -D__unix -Asystem(unix) -Asystem(svr4) -D__OPTIMIZE__ -g -D__supersparc__ -D__sparc_v8__ -D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) crap.c crap.i
GNU CPP version egcs-2.93.14 19990328 (gcc2 ss-980929 experimental) (sparc)
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/opt/egcs-19990328/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.93.14/../../../../sparc-sun-solaris2.5.1/include
/opt/egcs-19990328/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.93.14/include
/usr/include
End of search list.
The following default directories have been omitted from the search path:
/opt/egcs-19990328/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.93.14/../../../../include/g++-2
End of omitted list.
/opt/egcs-19990328/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.93.14/cc1 crap.i -quiet -dumpbase crap.c -mcpu=supersparc -mtune=ultrasparc -g -O1 -version -fPIC -o crap.s
GNU C version egcs-2.93.14 19990328 (gcc2 ss-980929 experimental) (sparc-sun-solaris2.5.1) compiled by GNU C version egcs-2.93.14 19990328 (gcc2 ss-980929 experimental).
/usr/ccs/bin/as -V -Qy -s -K PIC -o crap.o crap.s
/usr/ccs/bin/as: WorkShop Compilers 4.2 dev 13 May 1996
crap.i is
# 1 "crap.c"
extern double cos(double);
extern double sin(double);
extern double atan(double);
static long ___lp;
typedef int jmp_buf[12 ];
typedef struct ___jmpbuf_struct
{
jmp_buf buf;
} ___jmpbuf_struct;
typedef struct ___processor_state_struct
{
long *stack,
*stack_base,
*stack_limit,
*stack_trip,
*stack_break,
*fp;
long *heap,
*heap_limit,
*hp;
long r[20],
pc,
temp1,
temp2,
temp3,
temp4;
int na,
np;
int intr_enabled,
intr_flag[3];
long glo_list_head,
glo_list_tail;
long handler_break,
handler_stack_limit,
handler_heap_limit, handler_not_proc,
handler_not_proc_glo, handler_wrong_nargs,
handler_get_rest, handler_get_key,
handler_get_key_rest, handler_force,
handler_clam_conv_error, handler_cdef_conv_error,
handler_return_to_c, initial_continuation;
long executable_wills,
non_executable_wills;
___jmpbuf_struct *catcher;
} ___processor_state_struct, *___processor_state;
static long ___H_makect(___processor_state ___ps)
{
register long ___pc,
___temp;
register unsigned long long ___temp64;
register long ___start = ___lp + ((28) * 4 * (1 << 2));
register long *___hp;
register long *___fp;
register long ___r0;
register long ___r1;
register long ___r2;
register long ___r3;
register long ___r4;
register long ___r5;
register long ___r7;
double ___F64R1;
double ___F64R4;
double ___F64R5;
double ___F64R6;
double ___F64R7;
___hp = ___ps->hp;
___fp = ___ps->fp;
___r0 = ___ps->r[0];
___r1 = ___ps->r[1];
___r2 = ___ps->r[2];
___r3 = ___ps->r[3];
___r4 = ___ps->r[4];
___r5 = ___ps->r[5];
___r7 = ___ps->r[7];
___pc = ___ps->pc;
___jump:switch ((___pc -= ___start) / (4 * (1 << 2)))
{
case 28 - 28 + 0:
___L0_makect:
if (___ps->na == 3)
{
}
else
{
___ps->temp1 = ___start + ((28 - 28 + 0) * 4 * (1 << 2));
{
___pc = ___ps->handler_wrong_nargs;
goto ___jumpext;
}
}
___L_makect:
*(long *) (((long) (((long *) (___r2 - 1)) + 1)) + ((((long) (1L) << 2)) << (2 - 2))) = ___r1;
if (!(___r1 > ((long) (1L) << 2)))
{
goto ___L3_makect;
}
___r2 = (((___r1 >> (((long) (1L) << 2) >> 2)) & ~((1 << 2) - 1)));
___F64R4 = (___r2 >> 2);
___F64R5 = atan(1.);
___F64R4 = (___F64R5 / ___F64R4);
___F64R5 = (___r2 >> 2);
___F64R5 = (___F64R4 * ___F64R5);
___F64R5 = cos(___F64R5);
*(double *) (((long) (((long *) (___r3 - 1)) + 1)) + ((((long) (0L) << 2)) << (3 - 2))) = ___F64R5;
___F64R5 = *(double *) (((long) (((long *) (___r3 - 1)) + 1)) + ((((long) (0L) << 2)) << (3 - 2)));
___F64R5 = (.5 * ___F64R5);
*(double *) (((long) (((long *) (___r3 - 1)) + 1)) + ((___r2) << (3 - 2))) = ___F64R5;
___r4 = ((___hp += 2 + 2, ((long) ___hp & 7) == 0 ? (*(___hp - 2 - 1) = (((2 << 2) << (3 + 5)) + (30 << 3) + 0), *(double *) ((___hp - 2 - 1) + 1) = ___F64R4, ((long) (___hp - 2 - 1) + 1)) : (*(___hp - 2 - 2) = (((2 << 2) << (3 + 5)) + (30 << 3) + 0), *(double *) ((___hp - 2 - 2) + 1) = ___F64R4, ((long) (___hp - 2 - 2) + 1))));
___fp[-(1)] = (___r4);
___r4 = (___r3);
___r3 = (___r2);
___r2 = (___r1);
___r1 = (___fp[-(1)]);
___r5 = (((long) (1L) << 2));
if (___hp > ___ps->heap_limit)
{
___ps->temp1 = ___start + ((28 - 28 + 1) * 4 * (1 << 2));
{
___pc = ___ps->handler_heap_limit;
goto ___jumpext;
}
}
case 28 - 28 + 1:
___L1_makect:
if ((___r5 == ___r3))
{
goto ___L3_makect;
}
___L2_makect:
___F64R6 = (___r5 >> 2);
___F64R1 = (*(double *) ((((long *) (___r1 - 1)) + 1)));
___F64R6 = (___F64R1 * ___F64R6);
___F64R7 = cos(___F64R6);
___F64R7 = (.5 * ___F64R7);
*(double *) (((long) (((long *) (___r4 - 1)) + 1)) + ((___r5) << (3 - 2))) = ___F64R7;
___r7 = (((long) (___r2 - ___r5)));
___F64R6 = sin(___F64R6);
___F64R6 = (.5 * ___F64R6);
*(double *) (((long) (((long *) (___r4 - 1)) + 1)) + ((___r7) << (3 - 2))) = ___F64R6;
___r5 = (((long) (___r5 + ((long) (1L) << 2))));
if (!(___r5 == ___r3))
{
goto ___L2_makect;
}
___L3_makect:
___r1 = ((((long) -5 << 2) + 2));
{
___pc = ___r0;
goto ___jump;
}
} ___pc += ___start;
___jumpext:
___ps->pc = ___pc;
___ps->hp = ___hp;
___ps->r[1] = ___r1;
___ps->r[2] = ___r2;
___ps->r[3] = ___r3;
___ps->r[4] = ___r4;
___ps->r[5] = ___r5;
___ps->r[7] = ___r7;
return ___pc;
}
and crap.s is
.file "crap.c"
.stabs "/home/c/lucier/programs/gambc30/bigtests/16-64/",100,0,0,.LLtext0
.stabs "crap.c",100,0,0,.LLtext0
.section ".text"
.LLtext0:
.stabs "gcc2_compiled.", 0x3c, 0, 0, 0
.stabs "int:t(0,1)=r(0,1);0020000000000;0017777777777;",128,0,0,0
.stabs "char:t(0,2)=r(0,2);0;127;",128,0,0,0
.stabs "long int:t(0,3)=r(0,1);0020000000000;0017777777777;",128,0,0,0
.stabs "unsigned int:t(0,4)=r(0,1);0000000000000;0037777777777;",128,0,0,0
.stabs "long unsigned int:t(0,5)=r(0,1);0000000000000;0037777777777;",128,0,0,0
.stabs "long long int:t(0,6)=r(0,1);01000000000000000000000;0777777777777777777777;",128,0,0,0
.stabs "long long unsigned int:t(0,7)=r(0,1);0000000000000;01777777777777777777777;",128,0,0,0
.stabs "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0
.stabs "short unsigned int:t(0,9)=r(0,9);0;65535;",128,0,0,0
.stabs "signed char:t(0,10)=r(0,10);-128;127;",128,0,0,0
.stabs "unsigned char:t(0,11)=r(0,11);0;255;",128,0,0,0
.stabs "float:t(0,12)=r(0,1);4;0;",128,0,0,0
.stabs "double:t(0,13)=r(0,1);8;0;",128,0,0,0
.stabs "long double:t(0,14)=r(0,1);16;0;",128,0,0,0
.stabs "complex int:t(0,15)=s8real:(0,1),0,32;imag:(0,1),32,32;;",128,0,0,0
.stabs "complex float:t(0,16)=r(0,16);4;0;",128,0,0,0
.stabs "complex double:t(0,17)=r(0,17);8;0;",128,0,0,0
.stabs "complex long double:t(0,18)=r(0,18);16;0;",128,0,0,0
.stabs "void:t(0,19)=(0,19)",128,0,0,0
.stabs "jmp_buf:t(0,20)=(0,21)=ar(0,1);0;11;(0,1)",128,0,7,0
.stabs "___jmpbuf_struct:T(0,22)=s48buf:(0,20),0,384;;",128,0,0,0
.stabs "___jmpbuf_struct:t(0,23)=(0,22)",128,0,12,0
.stabs "___processor_state_struct:T(0,24)=s236stack:(0,25)=*(0,3),0,32;stack_base:(0,25),32,32;stack_limit:(0,25),64,32;stack_trip:(0,25),96,32;stack_break:(0,25),128,32;fp:(0,25),160,32;heap:(0,25),192,32;heap_limit:(0,25),224,32;hp:(0,25),256,32;r:(0,26)=ar(0,1);0;19;(0,3),288,640;pc:(0,3),928,32;temp1:(0,3),960,32;temp2:(0,3),992,32;temp3:(0,3),1024,32;temp4:(0,3),1056,32;na:(0,1),1088,32;np:(0,1),1120,32;intr_enabled:(0,1),1152,32;intr_flag:(0,27)=ar(0,1);0;2;(0,1),1184,96;glo_list_head:(0,3),1280,32;glo_list_tail:(0,3),1312,32;handler_break:(0,3),1344,32;handler_stack_limit:(0,3),1376,32;\\",128,0,0,0
.stabs "handler_heap_limit:(0,3),1408,32;handler_not_proc:(0,3),1440,32;handler_not_proc_glo:(0,3),1472,32;handler_wrong_nargs:(0,3),1504,32;handler_get_rest:(0,3),1536,32;handler_get_key:(0,3),1568,32;handler_get_key_rest:(0,3),1600,32;handler_force:(0,3),1632,32;handler_clam_conv_error:(0,3),1664,32;handler_cdef_conv_error:(0,3),1696,32;handler_return_to_c:(0,3),1728,32;initial_continuation:(0,3),1760,32;executable_wills:(0,3),1792,32;non_executable_wills:(0,3),1824,32;catcher:(0,28)=*(0,23),1856,32;;",128,0,0,0
.stabs "___processor_state_struct:t(0,29)=(0,24)",128,0,49,0
.stabs "___processor_state:t(0,30)=(0,31)=*(0,24)",128,0,49,0
.align 32
.LLGETPC0:
retl
add %o7,%l7,%l7
.section ".rodata"
.align 8
.LLC0:
.uaword 0x3ff00000 ! ~1.00000000000000000000e0
.uaword 0x0
.align 8
.LLC1:
.uaword 0x3fe00000 ! ~5.00000000000000000000e-1
.uaword 0x0
.section ".text"
.align 32
.stabs "___H_makect:f(0,3)",36,0,52,___H_makect
.stabs "___ps:P(0,30)",64,0,51,17
.type ___H_makect,#function
.proc 04
___H_makect:
.stabn 68,0,52,.LM1-___H_makect
.LM1:
!#PROLOGUE# 0
save %sp, -136, %sp
sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7
call .LLGETPC0
add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7
mov %i0, %l1
.stabn 68,0,53,.LM2-___H_makect
.LM2:
.LLBB2:
.stabn 68,0,56,.LM3-___H_makect
.LM3:
sethi %hi(___lp), %o0
or %o0, %lo(___lp), %o0
ld [%l7+%o0], %o0
ld [%o0], %o0
add %o0, 448, %i1
.stabn 68,0,71,.LM4-___H_makect
.LM4:
ld [%l1+32], %l2
.stabn 68,0,72,.LM5-___H_makect
.LM5:
ld [%l1+20], %i3
.stabn 68,0,73,.LM6-___H_makect
.LM6:
ld [%l1+36], %i4
.stabn 68,0,74,.LM7-___H_makect
.LM7:
ld [%l1+40], %l5
.stabn 68,0,75,.LM8-___H_makect
.LM8:
ld [%l1+44], %l4
.stabn 68,0,76,.LM9-___H_makect
.LM9:
ld [%l1+48], %l6
.stabn 68,0,77,.LM10-___H_makect
.LM10:
ld [%l1+52], %l3
.stabn 68,0,78,.LM11-___H_makect
.LM11:
ld [%l1+56], %l0
.stabn 68,0,79,.LM12-___H_makect
.LM12:
ld [%l1+64], %i2
.stabn 68,0,80,.LM13-___H_makect
.LM13:
ld [%l1+116], %i0
.LL3:
.stabn 68,0,81,.LM14-___H_makect
.LM14:
sub %i0, %i1, %i0
cmp %i0, 0
bge .LL23
mov %i0, %o0
add %i0, 15, %o0
.LL23:
sra %o0, 4, %o0
cmp %o0, 0
be .LL6
cmp %o0, 1
be .LL24
add %i0, %i1, %i0
b .LL25
st %i0, [%l1+116]
.LL6:
.stabn 68,0,85,.LM15-___H_makect
.LM15:
ld [%l1+136], %o0
cmp %o0, 3
be .LL10
cmp %l5, 4
.stabn 68,0,90,.LM16-___H_makect
.LM16:
st %i1, [%l1+120]
.stabn 68,0,93,.LM17-___H_makect
.LM17:
b .LL9
ld [%l1+188], %i0
.LL10:
.stabn 68,0,98,.LM18-___H_makect
.LM18:
ble .LL12
st %l5, [%l4+7]
.stabn 68,0,102,.LM19-___H_makect
.LM19:
sra %l5, 1, %l4
and %l4, -4, %l4
.stabn 68,0,103,.LM20-___H_makect
.LM20:
sra %l4, 2, %o0
st %o0, [%fp-36]
ld [%fp-36], %f3
fitod %f3, %f2
std %f2, [%fp-24]
.stabn 68,0,104,.LM21-___H_makect
.LM21:
sethi %hi(.LLC0), %o0
or %o0, %lo(.LLC0), %o0
ld [%l7+%o0], %o0
call atan, 0
ldd [%o0], %o0
.stabn 68,0,105,.LM22-___H_makect
.LM22:
ldd [%fp-24], %f4
fdivd %f0, %f4, %f4
std %f4, [%fp-24]
.stabn 68,0,106,.LM23-___H_makect
.LM23:
ld [%fp-36], %f5
fitod %f5, %f0
.stabn 68,0,108,.LM24-___H_makect
.LM24:
ldd [%fp-24], %f2
fmuld %f0, %f2, %f2
std %f2, [%fp-16]
call cos, 0
ldd [%fp-16], %o0
.stabn 68,0,109,.LM25-___H_makect
.LM25:
st %f0, [%l6+3]
st %f1, [%l6+7]
.stabn 68,0,111,.LM26-___H_makect
.LM26:
sethi %hi(.LLC1), %o0
or %o0, %lo(.LLC1), %o0
ld [%l7+%o0], %o0
ldd [%o0], %f2
fmuld %f0, %f2, %f0
.stabn 68,0,112,.LM27-___H_makect
.LM27:
sll %l4, 1, %o0
add %o0, %l6, %o0
st %f0, [%o0+3]
.stabn 68,0,113,.LM28-___H_makect
.LM28:
add %l2, 16, %l2
andcc %l2, 7, %g0
bne .LL13
st %f1, [%o0+7]
mov 2288, %o0
st %o0, [%l2-12]
ldd [%fp-24], %o0
std %o0, [%l2-8]
b .LL14
add %l2, -11, %l3
.LL13:
mov 2288, %o0
st %o0, [%l2-16]
ldd [%fp-24], %o2
st %o2, [%l2-12]
st %o3, [%l2-8]
add %l2, -15, %l3
.LL14:
.stabn 68,0,114,.LM29-___H_makect
.LM29:
st %l3, [%i3-4]
.stabn 68,0,115,.LM30-___H_makect
.LM30:
mov %l6, %l3
.stabn 68,0,116,.LM31-___H_makect
.LM31:
mov %l4, %l6
.stabn 68,0,117,.LM32-___H_makect
.LM32:
mov %l5, %l4
.stabn 68,0,118,.LM33-___H_makect
.LM33:
ld [%i3-4], %l5
.stabn 68,0,120,.LM34-___H_makect
.LM34:
ld [%l1+28], %o0
cmp %l2, %o0
bleu .LL24
mov 4, %l0
.stabn 68,0,122,.LM35-___H_makect
.LM35:
add %i1, 16, %o0
st %o0, [%l1+120]
.stabn 68,0,125,.LM36-___H_makect
.LM36:
b .LL9
ld [%l1+176], %i0
.LL19:
.stabn 68,0,135,.LM37-___H_makect
.LM37:
st %o0, [%fp-16]
ld [%fp-16], %f3
fitod %f3, %f2
std %f2, [%fp-32]
.stabn 68,0,136,.LM38-___H_makect
.LM38:
ld [%l5+3], %f2
ld [%l5+7], %f3
.stabn 68,0,137,.LM39-___H_makect
.LM39:
ldd [%fp-32], %f4
fmuld %f4, %f2, %f4
std %f4, [%fp-32]
.stabn 68,0,138,.LM40-___H_makect
.LM40:
call cos, 0
ldd [%fp-32], %o0
.stabn 68,0,139,.LM41-___H_makect
.LM41:
sethi %hi(.LLC1), %o0
ldd [%o0+%lo(.LLC1)], %f2
fmuld %f0, %f2, %f0
.stabn 68,0,140,.LM42-___H_makect
.LM42:
sll %l0, 1, %o0
add %o0, %l3, %o0
st %f0, [%o0+3]
st %f1, [%o0+7]
.stabn 68,0,141,.LM43-___H_makect
.LM43:
sub %l4, %l0, %i2
.stabn 68,0,142,.LM44-___H_makect
.LM44:
call sin, 0
ldd [%fp-32], %o0
.stabn 68,0,143,.LM45-___H_makect
.LM45:
sethi %hi(.LLC1), %o0
ldd [%o0+%lo(.LLC1)], %f2
fmuld %f0, %f2, %f0
std %f0, [%fp-32]
.stabn 68,0,144,.LM46-___H_makect
.LM46:
sll %i2, 1, %o0
add %o0, %l3, %o0
ldd [%fp-32], %o2
st %o2, [%o0+3]
st %o3, [%o0+7]
.stabn 68,0,145,.LM47-___H_makect
.LM47:
add %l0, 4, %l0
.stabn 68,0,146,.LM48-___H_makect
.LM48:
.LL24:
cmp %l0, %l6
bne .LL19
sra %l0, 2, %o0
.LL12:
.stabn 68,0,151,.LM49-___H_makect
.LM49:
mov -18, %l5
.stabn 68,0,154,.LM50-___H_makect
.LM50:
b .LL3
mov %i4, %i0
.LL9:
.stabn 68,0,158,.LM51-___H_makect
.LM51:
st %i0, [%l1+116]
.stabn 68,0,159,.LM52-___H_makect
.LM52:
.LL25:
st %l2, [%l1+32]
.stabn 68,0,160,.LM53-___H_makect
.LM53:
st %l5, [%l1+40]
.stabn 68,0,161,.LM54-___H_makect
.LM54:
st %l4, [%l1+44]
.stabn 68,0,162,.LM55-___H_makect
.LM55:
st %l6, [%l1+48]
.stabn 68,0,163,.LM56-___H_makect
.LM56:
st %l3, [%l1+52]
.stabn 68,0,164,.LM57-___H_makect
.LM57:
st %l0, [%l1+56]
.stabn 68,0,165,.LM58-___H_makect
.LM58:
st %i2, [%l1+64]
.stabn 68,0,166,.LM59-___H_makect
.LM59:
.stabn 68,0,167,.LM60-___H_makect
.LM60:
.LLBE2:
ret
restore
.LLfe1:
.size ___H_makect,.LLfe1-___H_makect
.stabs "___pc:r(0,3)",64,0,53,24
.stabs "___start:r(0,3)",64,0,56,25
.stabs "___hp:r(0,25)",64,0,57,18
.stabs "___fp:r(0,25)",64,0,58,27
.stabs "___r0:r(0,3)",64,0,59,28
.stabs "___r1:r(0,3)",64,0,60,21
.stabs "___r2:r(0,3)",64,0,61,20
.stabs "___r3:r(0,3)",64,0,62,22
.stabs "___r4:r(0,3)",64,0,63,19
.stabs "___r5:r(0,3)",64,0,64,16
.stabs "___r7:r(0,3)",64,0,65,26
.stabs "___F64R1:r(0,13)",64,0,66,34
.stabs "___F64R4:(0,13)",128,0,67,-24
.stabs "___F64R5:r(0,13)",64,0,68,32
.stabs "___F64R6:(0,13)",128,0,69,-32
.stabs "___F64R7:r(0,13)",64,0,70,32
.stabn 192,0,0,.LLBB2-___H_makect
.stabn 224,0,0,.LLBE2-___H_makect
.LLscope0:
.stabs "",36,0,0,.LLscope0-___H_makect
.stabs "___lp:S(0,3)",40,0,5,___lp
.local ___lp
.common ___lp,4,4
.text
.stabs "",100,0,0,Letext
Letext:
.ident "GCC: (GNU) egcs-2.93.14 19990328 (gcc2 ss-980929 experimental)"
The previous analysis applies; search for
.LM45:
.LM41:
after which the floating point constant 0.5 is loaded incorrectly.
Brad Lucier lucier@math.purdue.edu
More information about the Gcc-bugs
mailing list