3.0.1 Freeze

Mark Mitchell mark@codesourcery.com
Tue Aug 7 11:04:00 GMT 2001


> If you could look at
> < http://gcc.gnu.org/ml/gcc-bugs/2001-08/msg00180.html > and advise me a
> bit I'll happily produce a patch fixing this high priority bug producing
> buggy linux kernels on PPC.

I do not understand why this is a bug.  The code that is emitted
on an x86, for:

  void f() {
    strcpy(c, "test string" + u);
  }

is:

	movl	u, %edx
	movl	$12, %eax
	subl	%edx, %eax
	addl	$.LC0, %edx
	pushl	%eax
	movl	c, %eax
	pushl	%edx
	pushl	%eax
	call	memcpy

or, in C:

  memcpy (c, "test string" + u, 12 - u);

That seems to work just fine, since if, say, u == 3, then 9 bytes
are copied, starting with the second `t' in `test', so we copy
"t string" and the trailing NUL.

In the pseudocode in the bug report, you had `u - 12', which would
indeed be a problem, but that is not what I am seeing.

Can you explain this in more detail?

-- 
Mark Mitchell                mark@codesourcery.com
CodeSourcery, LLC            http://www.codesourcery.com



More information about the Gcc mailing list