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) :);
}

Reply via email to