From: | Noah Misch <noah(at)leadboat(dot)com> |
---|---|
To: | Andres Freund <andres(at)2ndquadrant(dot)com> |
Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Peter Geoghegan <pg(at)heroku(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>, Ants Aasma <ants(at)cybertec(dot)at> |
Subject: | xlc atomics |
Date: | 2015-07-04 22:40:41 |
Message-ID: | 20150704224041.GA898636@tornado.leadboat.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, Jun 25, 2014 at 07:14:34PM +0200, Andres Freund wrote:
> * gcc, msvc work. acc, xlc, sunpro have blindly written support which
> should be relatively easy to fix up.
I tried this on three xlc configurations.
(1) "IBM XL C/C++ for AIX, V12.1 (5765-J02, 5725-C72)". Getting it working
required the attached patch. None of my xlc configurations have an <atomic.h>
header, and a web search turned up no evidence of one in connection with xlc
platforms. Did you learn of a configuration needing atomic.h under xlc? The
rest of the changes are hopefully self-explanatory in light of the
documentation cited in generic-xlc.h. (Building on AIX has regressed in other
ways unrelated to atomics; I will write more about that in due course.)
(2) "IBM XL C/C++ for Linux, V13.1.2 (5725-C73, 5765-J08)" for ppc64le,
http://www-01.ibm.com/support/docview.wss?uid=swg27044056&aid=1. This
compiler has a Clang-derived C frontend. It defines __GNUC__ and offers
GCC-style __sync_* atomics. Therefore, PostgreSQL selects generic-gcc.h.
test_atomic_ops() fails because __sync_lock_test_and_set() of one-byte types
segfaults at runtime. I have reported this to the vendor. Adding
"pgac_cv_gcc_sync_char_tas=no" to the "configure" invocation is a good
workaround. I could add a comment about that to src/test/regress/sql/lock.sql
for affected folks to see in regression.diffs. To do better, we could make
PGAC_HAVE_GCC__SYNC_CHAR_TAS perform a runtime test where possible. Yet
another option is to force use of generic-xlc.h on this compiler.
(3) "IBM XL C/C++ for Linux, V13.1.2 (5725-C73, 5765-J08)" for ppc64le,
modifying atomics.h to force use of generic-xlc.h. While not a supported
PostgreSQL configuration, I felt this would make an interesting data point.
It worked fine after applying the patch developed for the AIX configuration.
Thanks,
nm
Attachment | Content-Type | Size |
---|---|---|
generic-xlc-v1.patch | text/plain | 2.2 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2015-07-04 22:54:43 | Re: xlc atomics |
Previous Message | Robert Haas | 2015-07-04 22:14:21 | Re: Let PostgreSQL's On Schedule checkpoint write buffer smooth spread cycle by tuning IsCheckpointOnSchedule? |