http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32820
Siarhei Siamashka <siarhei.siamashka at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |siarhei.siamashka at gmail
| |dot com
--- Comment #7 from Siarhei Siamashka <siarhei.siamashka at gmail dot com>
2010-10-11 19:18:46 UTC ---
Looks like this or similar "Variables in Specified Registers" bug is also
reproducible on ARM with gcc 4.5.1
$ cat test.c
int f(int a)
{
register int result asm("r0");
asm (
"add r0, %[a], #123\n"
: [result] "=&r" (result)
: [a] "r" (a)
);
return result;
}
$ gcc -O2 -c test.c
$ objdump -d test.o
00000000 <f>:
0: e280007b add r0, r0, #123 ; 0x7b
4: e1a00003 mov r0, r3
8: e12fff1e bx lr
Here the local variable 'result' gets assigned to register r3 instead of r0
causing all kind of problems.