On 9/1/20 2:58 PM, Tom de Vries wrote: > On 9/1/20 1:41 PM, Tobias Burnus wrote: >> Hi Tom, hello all, >> >> it turned out that the testcase fails on PowerPC (but not x86_64) >> as the nvptx lto complains: unresolved symbol >> __sync_val_compare_and_swap_16 >> >> The testcase uses int128 – and that's the culprit, but I have no idea >> why it only fails with PowerPC and not with x86-64. >> >
Reproduced on x86_64 using trigger patch: ... $ git diff diff --git a/gcc/config/i386/sync.md b/gcc/config/i386/sync.md index ed17bb00205..eccedac192f 100644 --- a/gcc/config/i386/sync.md +++ b/gcc/config/i386/sync.md @@ -153,9 +153,15 @@ (DI "TARGET_64BIT || (TARGET_CMPXCHG8B && (TARGET_80387 || TARGET_SSE))") ]) + (define_mode_iterator ATOMIC2 + [QI HI SI + (DI "TARGET_64BIT || (TARGET_CMPXCHG8B && (TARGET_80387 || TARGET_SSE))") + TI + ]) + (define_expand "atomic_load<mode>" - [(set (match_operand:ATOMIC 0 "nonimmediate_operand") - (unspec:ATOMIC [(match_operand:ATOMIC 1 "memory_operand") + [(set (match_operand:ATOMIC2 0 "nonimmediate_operand") + (unspec:ATOMIC2 [(match_operand:ATOMIC2 1 "memory_operand") (match_operand:SI 2 "const_int_operand")] UNSPEC_LDA))] "" diff --git a/libgomp/testsuite/libgomp.c-c++-common/reduction-16.c b/libgomp/testsuite/libgomp.c-c++-common/reduction-16.c index d0e82b04790..62b0e032c33 100644 --- a/libgomp/testsuite/libgomp.c-c++-common/reduction-16.c +++ b/libgomp/testsuite/libgomp.c-c++-common/reduction-16.c @@ -1,4 +1,5 @@ /* { dg-do run } */ +/* { dg-additional-options "-mcx16" } */ #include <stdlib.h> ... Thanks, - Tom