Article View: gnu.gcc.bug
Article #307schedule-insns2-bug
From: Benno Tietz
Date: Tue, 28 Jul 1992 18:08
Date: Tue, 28 Jul 1992 18:08
141 lines
4929 bytes
4929 bytes
Hi,
I found a bug in gcc-2.2.2
Machine : Sun 4/330
OS : 4.1.1
Configuration: ./configure sun4 -prefix=/home/tietz/gnu
Syptoms : program computes incorrect results
Command :
tietz@eos$ gcc -v -O2 bug.c -o bug
Reading specs from /home/tietz/gnu/lib/gcc-lib/sun4/2.2.2/specs
gcc version 2.2.2
/home/tietz/gnu/lib/gcc-lib/sun4/2.2.2/cpp -lang-c -v -undef -D__GNUC__=2 -Dsparc -Dsun -Dunix -D__sparc__ -D__sun__ -D__unix__ -D__sparc -D__sun -D__unix -D__OPTIMIZE__ bug.c /usr/tmp/cca05651.i
GNU CPP version 2.2.2 (sparc)
/home/tietz/gnu/lib/gcc-lib/sun4/2.2.2/cc1 /usr/tmp/cca05651.i -quiet -dumpbase bug.c -O2 -version -o /usr/tmp/cca05651.s
GNU C version 2.2.2 (sparc) compiled by GNU C version 2.2.2.
as -o bug.o /usr/tmp/cca05651.s
/home/tietz/gnu/lib/gcc-lib/sun4/2.2.2/ld -e start -dc -dp -o bug /lib/crt0.o -L/home/tietz/gnu/lib/gcc-lib/sun4/2.2.2 -L/home/tietz/gnu/lib bug.o -lgcc -lc -lgcc
tietz@eos$ gcc -v -O2 -fno-schedule-insns2 bug.c -o nobug
Reading specs from /home/tietz/gnu/lib/gcc-lib/sun4/2.2.2/specs
gcc version 2.2.2
/home/tietz/gnu/lib/gcc-lib/sun4/2.2.2/cpp -lang-c -v -undef -D__GNUC__=2 -Dsparc -Dsun -Dunix -D__sparc__ -D__sun__ -D__unix__ -D__sparc -D__sun -D__unix -D__OPTIMIZE__ bug.c /usr/tmp/cca05664.i
GNU CPP version 2.2.2 (sparc)
/home/tietz/gnu/lib/gcc-lib/sun4/2.2.2/cc1 /usr/tmp/cca05664.i -quiet -dumpbase bug.c -O2 -version -fno-schedule-insns2 -o /usr/tmp/cca05664.s
GNU C version 2.2.2 (sparc) compiled by GNU C version 2.2.2.
as -o bug.o /usr/tmp/cca05664.s
/home/tietz/gnu/lib/gcc-lib/sun4/2.2.2/ld -e start -dc -dp -o nobug /lib/crt0.o -L/home/tietz/gnu/lib/gcc-lib/sun4/2.2.2 -L/home/tietz/gnu/lib bug.o -lgcc -lc -lgcc
tietz@eos$ bug
50
0
0
0
tietz@eos$ nobug
50
98
246
0
programm:
/* bug.c */
#define umul_ppmm(w1, w0, u, v) \
__asm__ ("! Inlined umul_ppmm
wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr
sra %3,31,%%g2 ! Don't move this insn
and %2,%%g2,%%g2 ! Don't move this insn
andcc %%g0,0,%%g1 ! Don't move this insn
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,%3,%%g1
mulscc %%g1,0,%%g1
add %%g1,%%g2,%0
rd %%y,%1" \
: "=r" ((unsigned long int)(w1)), "=r" ((unsigned long int)(w0))\
: "%rI" ((unsigned long int)(u)), "r" ((unsigned long int)(v)) \
: "%g1", "%g2")
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
__asm__ ("addcc %4,%5,%1
addx %2,%3,%0" \
: "=r" ((unsigned long int)(sh)), "=&r" ((unsigned long int)(sl))\
: "%r" ((unsigned long int)(ah)), "rI" ((unsigned long int)(bh)),\
"%r" ((unsigned long int)(al)), "rI" ((unsigned long int)(bl)))
int cy_limb, prod_high, prod_low, v_limb, j;
int up[4], yprodp[4];
int *yup, *prodp;
main ()
{
int i;
v_limb = 2;
yup = &up[3];
prodp = &yprodp[3];
up[0] = 25;
up[1] = 49;
up[2] = 123;
up[3] = 12;
cy_limb = 0;
j = -3;
do
{
umul_ppmm (prod_high, prod_low, yup[j], v_limb);
add_ssaaaa (cy_limb, prodp[j], prod_high, prod_low, 0, cy_limb);
j++;
}
while (j < 0);
for (i=0; i<4; i++)
printf ("%d\n", yprodp[i]);
}
----------------------------------------------------------------------
Jacquin's Postulate on Democratic Government:
No man's life, liberty, or property are safe
while the legislature is in session.
----------------------------------------------------------------------
tietz@eos.informatik.uni-bonn.de or tietz@cs.bonn.edu
######################################################################
# Member of the League for Programming Freedom #
# -- write to league@prep.ai.mit.edu #
######################################################################
Technical Details
Message-ID:
<9207281408.AA05763@eos.informatik.uni-bonn.de.noname>Path:
arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!eos.informatik.uni-bonn.de!tietzShow Full Headers
Complete Article Headers
Newsgroups: gnu.gcc.bug Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!eos.informatik.uni-bonn.de!tietz From: tietz@eos.informatik.uni-bonn.de (Benno Tietz) Subject: schedule-insns2-bug Message-ID: <9207281408.AA05763@eos.informatik.uni-bonn.de.noname> Sender: gnulists@ai.mit.edu Organization: Gnus Not Usenet Distribution: gnu Date: Tue, 28 Jul 1992 18:08:44 GMT Approved: bug-gcc@prep.ai.mit.edu Lines: 142