Another C compiler bug

utzoo!decvax!duke!chico!zeppo!harpo!utah-cs!lepreau utzoo!decvax!duke!chico!zeppo!harpo!utah-cs!lepreau
Wed Jan 6 12:25:21 AEST 1982


While I'm at it, here's another apparent bug in the v7 Ritchie compiler
which Spencer Thomas found.  We have no fix, does anyone?
------------------
From: thomas
Subj: C compiler bug
Try this:
{
	char a[2][2];
	register int i, j, k;

	a[i][j] %= k;
}

and look at the assembly code:

~a=177766
~i=r4
~j=r3
~k=r2
mov	r4,r1		// figure out index into array
asl	r1
add	r5,r1
add	r3,r1
add	$-12,r1
mov	r1,-(sp)	// push array address
mov	r2,-(sp)	// push divisor
movb	*2(sp),r1	// get a[i][j]
sxt	r0		// prepare for divide
div	(sp)+,r0	// do divide
mov	r1,*(sp)+	// and save remainder (into a word, not a byte!!)

=S



More information about the Net.bugs.v7 mailing list