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