restrict and char pointers

Jeroen Dobbelaere jeroen.dobbelaere@gmail.com
Wed May 4 10:18:00 GMT 2005


Hi,

I have a question concerning '__restrict__' :

With gcc-4.0.0 (-O3 -fomit-frame-pointer, on i686), following piece of code :


void test_1(unsigned long* __restrict__ bar, unsigned long* __restrict__ bas)
{
  unsigned long tmp = *bar;
  *bas = 0;
  *bar = tmp;
}

void test_2(unsigned long* __restrict__ bar, char* __restrict__ bas)
{
  unsigned long tmp = *bar;
  *bas = 0;
  *bar = tmp;
}


compiles to :

_Z6test_1PmS_:
	movl	8(%esp), %edx
	movl	$0, (%edx)
	ret


_Z6test_2PmPc:
	movl	4(%esp), %eax
	movl	8(%esp), %edx
	movl	(%eax), %ecx
	movb	$0, (%edx)
	movl	%ecx, (%eax)
	ret



I would expect that the second case compiles to :
	movl	8(%esp), %edx
	movb	$0, (%edx)
	ret


Greetings,
-- 
Jeroen Dobbelaere



More information about the Gcc mailing list