This is the mail archive of the java-prs@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libgcj/49193] New: __sync_xxxx builtins aren't used insysdep/*/locks.h


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49193

           Summary: __sync_xxxx builtins aren't used in sysdep/*/locks.h
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libgcj
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: hjl.tools@gmail.com


sysdep/x86-64/locks.h has

inline static bool
compare_and_swap(volatile obj_addr_t *addr,
         obj_addr_t old,
         obj_addr_t new_val)
{
  char result;
#ifdef __x86_64__
  __asm__ __volatile__("lock; cmpxchgq %2, %0; setz %1"
          : "=m"(*(addr)), "=q"(result)
          : "r" (new_val), "a"(old), "m"(*addr)
          : "memory");
#else
  __asm__ __volatile__("lock; cmpxchgl %2, %0; setz %1"
               : "=m"(*addr), "=q"(result)
               : "r" (new_val), "a"(old), "m"(*addr)
               : "memory");
#endif
  return (bool) result;
}

We can replace them with __sync_xxxx builtins.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]