Hi! On Mon, 30 Jan 2017 19:54:00 +0100, Torvald Riegel <trie...@redhat.com> wrote: > This patch fixes the __atomic builtins to not implement supposedly > lock-free atomic loads based on just a compare-and-swap operation. [...]
> I've tested this on an x86_64-linux bootstrap build and see no > regressions. (With the exception of two OpenMP failures, which Jakub > will take care of. These are: [-PASS:-]{+FAIL:+} libgomp.c/atomic-2.c (test for excess errors) [-PASS:-]{+UNRESOLVED:+} libgomp.c/atomic-2.c [-execution test-]{+compilation failed to produce executable+} atomic-2.c:(.text+0x50): undefined reference to `__atomic_load_16' [-PASS:-]{+FAIL:+} libgomp.c/atomic-5.c (test for excess errors) [-PASS:-]{+UNRESOLVED:+} libgomp.c/atomic-5.c [-execution test-]{+compilation failed to produce executable+} atomic-5.c:(.text+0x55): undefined reference to `__atomic_load_16' (Would've been nice to xfail these as part of your commit, until Jakub gets to address that.) > The other failures I saw didn't seem atomics related > (eg, openacc) I suppose you're testing without nvptx offloading -- which failures do you see for OpenACC testing? (There shouldn't be any for host fallback testing.) > I haven't compared it against a full bootstrap build and > make check of trunk.). I just happened to do that for x86_64-pc-linux-gnu, and I'm seeing the following additional changes; posting this just in case that's not expected to happen: -PASS: gcc.dg/atomic-compare-exchange-5.c (test for excess errors) -PASS: gcc.dg/atomic-compare-exchange-5.c execution test +UNSUPPORTED: gcc.dg/atomic-compare-exchange-5.c -PASS: gcc.dg/atomic-exchange-5.c (test for excess errors) -PASS: gcc.dg/atomic-exchange-5.c execution test +UNSUPPORTED: gcc.dg/atomic-exchange-5.c -PASS: gcc.dg/atomic-load-5.c (test for excess errors) -PASS: gcc.dg/atomic-load-5.c execution test +UNSUPPORTED: gcc.dg/atomic-load-5.c -PASS: gcc.dg/atomic-op-5.c (test for excess errors) -PASS: gcc.dg/atomic-op-5.c execution test +UNSUPPORTED: gcc.dg/atomic-op-5.c -PASS: gcc.dg/atomic-store-5.c (test for excess errors) -PASS: gcc.dg/atomic-store-5.c execution test +UNSUPPORTED: gcc.dg/atomic-store-5.c -PASS: gcc.dg/atomic-store-6.c (test for excess errors) -PASS: gcc.dg/atomic-store-6.c execution test +UNSUPPORTED: gcc.dg/atomic-store-6.c -PASS: gcc.dg/simulate-thread/atomic-load-int128.c -O0 -g (test for excess errors) -PASS: gcc.dg/simulate-thread/atomic-load-int128.c -O0 -g thread simulation test +UNSUPPORTED: gcc.dg/simulate-thread/atomic-load-int128.c -O0 -g -PASS: gcc.dg/simulate-thread/atomic-load-int128.c -O2 -g (test for excess errors) -PASS: gcc.dg/simulate-thread/atomic-load-int128.c -O2 -g thread simulation test +UNSUPPORTED: gcc.dg/simulate-thread/atomic-load-int128.c -O2 -g -PASS: gcc.dg/simulate-thread/atomic-load-int128.c -O3 -g (test for excess errors) -PASS: gcc.dg/simulate-thread/atomic-load-int128.c -O3 -g thread simulation test +UNSUPPORTED: gcc.dg/simulate-thread/atomic-load-int128.c -O3 -g -PASS: gcc.dg/simulate-thread/atomic-other-int128.c -O0 -g (test for excess errors) -PASS: gcc.dg/simulate-thread/atomic-other-int128.c -O0 -g thread simulation test +UNSUPPORTED: gcc.dg/simulate-thread/atomic-other-int128.c -O0 -g -PASS: gcc.dg/simulate-thread/atomic-other-int128.c -O2 -g (test for excess errors) -PASS: gcc.dg/simulate-thread/atomic-other-int128.c -O2 -g thread simulation test +UNSUPPORTED: gcc.dg/simulate-thread/atomic-other-int128.c -O2 -g -PASS: gcc.dg/simulate-thread/atomic-other-int128.c -O3 -g (test for excess errors) -PASS: gcc.dg/simulate-thread/atomic-other-int128.c -O3 -g thread simulation test +UNSUPPORTED: gcc.dg/simulate-thread/atomic-other-int128.c -O3 -g Grüße Thomas