Re: Broken atomics code on PPC with FreeBSD 10.3

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-hackers@postgresql.org
Date: 2016-12-30T16:14:24Z
Lists: pgsql-hackers

On December 30, 2016 4:48:22 PM GMT+01:00, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>and got no warnings and the attached output.  I'm not very good at
>reading
>PPC assembler, but I think what is happening in the "char" case is that
>gcc is trying to emulate a byte-wide operation using a word-wide one,
>ie an lwarx/stwcx. loop. 

Hm.  This seems to suggest a straight out code generation bug in that compiler, not a failure in intrinsic detection.

I'll note that there's certainly ppc64 machine with that intrinsic working (tested that on the community hydra during atomics development).  So either it's a bug specific to some compiler version,  or 32bit ppc.

I assume there's no trivial way to get a newer compiler on that machine?

 Andres
-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.


Commits

  1. Prefer int-wide pg_atomic_flag over char-wide when using gcc intrinsics.

  2. Allow Pin/UnpinBuffer to operate in a lockfree manner.

  3. Avoid the use of a separate spinlock to protect a LWLock's wait queue.

  4. Move buffer I/O and content LWLocks out of the main tranche.

  5. Improve spinlock performance for HP-UX, ia64, non-gcc.