http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53735
zhuolin liu <zhuolin.liu at arm dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |zhuolin.liu at arm dot com
--- Comment #3 from zhuolin liu <zhuolin.liu at arm dot com> 2012-07-24
09:04:15 UTC ---
simple code
fork() fails to assemble with -mthumb -Os, works with -O2 instead of -Os.
register int aa5 __asm__ ("r4") ;
register int aa6 __asm__ ("r5") ;
struct pthread
{
int tid;
int pid;
int ss[128];
};
int add_lock;
int fork (void)
{
int * meself = __builtin_thread_pointer () - 1;
if (add_lock !=(int)meself)
{
__lll_lock_wait_private (0);
}
register int __a1 __asm__ ("a1")=1;
register int _v3 __asm__ ("v3") = 1;
int _v1tmp = (int) (&((struct pthread *)__builtin_thread_pointer () -
1)->tid);
register int __a2 __asm__ ("a2") =1;
register int __a3 __asm__ ("a3") =1;
register int __a4 __asm__ ("a4") =1;
register int _v1 __asm__ ("v1") = _v1tmp;
__asm__ __volatile__ ( "\n" : :"r" (_v3) , "r" (__a1), "r" (__a2), "r"
(__a3), "r" (__a4), "r" (_v1) :);
}