re PR testsuite/51258 (64-bit gcc.dg/atomic-compare-exchange-5.c link failure on 32-bit Solaris/x86)
PR testsuite/51258 * lib/target-supports.exp (check_effective_target_sync_int_128_runtime): New procedure. (check_effective_target_sync_long_long_runtime): Ditto. (check_effective_target_sync_long_long): Add arm*-*-*. (check_effective_target_sync_longlong): Remove. * gcc.dg/atomic-op-5.c: Require sync_int_128_runtime effective target. * gcc.dg/atomic-compare-exchange-5.c: Ditto. * gcc.dg/atomic-exchange-5.c: Ditto. * gcc.dg/atomic-load-5.c: Ditto. * gcc.dg/atomic-store-5.c: Ditto. * gcc.dg/simulate-thread/atomic-load-int128.c: Ditto. * gcc.dg/simulate-thread/atomic-other-int128.c: Ditto. * gcc.dg/atomic-op-4.c: Require sync_long_long_runtime effective target. * gcc.dg/atomic-compare-exchange-4.c: Ditto. * gcc.dg/atomic-exchange-4.c: Ditto. * gcc.dg/atomic-load-4.c: Ditto. * gcc.dg/atomic-store-4.c: Ditto. * gcc.dg/di-longlong64-sync-1.c: Ditto. * gcc.dg/di-sync-multithread.c: Ditto. * gcc.dg/simulate-thread/atomic-load-longlong.c: Ditto. * gcc.dg/simulate-thread/atomic-other-longlong.c: Ditto. From-SVN: r181727
This commit is contained in:
parent
f29bda8308
commit
bf71de9423
@ -82,11 +82,12 @@
|
||||
|
||||
2011-11-24 Razya Ladelsky <razya@il.ibm.com>
|
||||
|
||||
* tree-data-ref.c (initialize_data_dependence_relation): Update
|
||||
* tree-data-ref.c (initialize_data_dependence_relation): Update
|
||||
comment for the self dependence case.
|
||||
(compute_self_dependence): Remove.
|
||||
* tree-vect-data-refs.c (vect_analyze_data_refs): Remove call to
|
||||
compute_self_dependenc.
|
||||
* tree-vect-data-refs.c (vect_analyze_data_refs): Remove call to
|
||||
compute_self_dependenc.
|
||||
|
||||
2011-11-24 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* c-decl.c (warn_if_shadowing): Don't warn if shadowed
|
||||
@ -144,7 +145,7 @@
|
||||
(sync_compare_and_swap<IMODE>): Remove.
|
||||
(sync_lock_release<IMODE>): Remove.
|
||||
|
||||
* config/ia64/ia64.md: Use define_e_enum for UNSPEC_*
|
||||
* config/ia64/ia64.md: Use define_c_enum for UNSPEC_*
|
||||
and UNSPECV_* constants.
|
||||
|
||||
2011-11-22 Tom de Vries <tom@codesourcery.com>
|
||||
@ -165,7 +166,8 @@
|
||||
2011-11-21 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* opts.c (finish_options): Do not fail for -fgnu-tm.
|
||||
* gimple-streamer-out.c (output_gimple_stmt): Handle GIMPLE_TRANSACTION.
|
||||
* gimple-streamer-out.c (output_gimple_stmt): Handle
|
||||
GIMPLE_TRANSACTION.
|
||||
* gimple-streamer-in.c (input_gimple_stmt): Same.
|
||||
* lto-cgraph.c (input_overwrite_node): Read tm_clone bit.
|
||||
(lto_output_node): Write tm_clone bit.
|
||||
|
@ -1,3 +1,30 @@
|
||||
2011-11-25 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR testsuite/51258
|
||||
* lib/target-supports.exp
|
||||
(check_effective_target_sync_int_128_runtime): New procedure.
|
||||
(check_effective_target_sync_long_long_runtime): Ditto.
|
||||
(check_effective_target_sync_long_long): Add arm*-*-*.
|
||||
(check_effective_target_sync_longlong): Remove.
|
||||
|
||||
* gcc.dg/atomic-op-5.c: Require sync_int_128_runtime effective target.
|
||||
* gcc.dg/atomic-compare-exchange-5.c: Ditto.
|
||||
* gcc.dg/atomic-exchange-5.c: Ditto.
|
||||
* gcc.dg/atomic-load-5.c: Ditto.
|
||||
* gcc.dg/atomic-store-5.c: Ditto.
|
||||
* gcc.dg/simulate-thread/atomic-load-int128.c: Ditto.
|
||||
* gcc.dg/simulate-thread/atomic-other-int128.c: Ditto.
|
||||
* gcc.dg/atomic-op-4.c: Require sync_long_long_runtime
|
||||
effective target.
|
||||
* gcc.dg/atomic-compare-exchange-4.c: Ditto.
|
||||
* gcc.dg/atomic-exchange-4.c: Ditto.
|
||||
* gcc.dg/atomic-load-4.c: Ditto.
|
||||
* gcc.dg/atomic-store-4.c: Ditto.
|
||||
* gcc.dg/di-longlong64-sync-1.c: Ditto.
|
||||
* gcc.dg/di-sync-multithread.c: Ditto.
|
||||
* gcc.dg/simulate-thread/atomic-load-longlong.c: Ditto.
|
||||
* gcc.dg/simulate-thread/atomic-other-longlong.c: Ditto.
|
||||
|
||||
2011-11-25 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/50408
|
||||
@ -12,7 +39,7 @@
|
||||
|
||||
PR c/51256
|
||||
* gcc.dg/atomic-pr51256.c: New. Test error conditions.
|
||||
|
||||
|
||||
2011-11-24 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/51227
|
||||
@ -104,8 +131,8 @@
|
||||
|
||||
2011-11-22 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
|
||||
|
||||
* gcc.dg/vshift-1.c (main): Call rand instead of random.
|
||||
* gcc.dg/vshift-3.c (main): Likewise.
|
||||
* gcc.dg/vshift-1.c (main): Call rand instead of random.
|
||||
* gcc.dg/vshift-3.c (main): Likewise.
|
||||
|
||||
2011-11-22 Iain Sandoe <iains@gcc.gnu.org>
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Test __atomic routines for existence and proper execution on 8 byte
|
||||
values with each valid memory model. */
|
||||
/* { dg-do run } */
|
||||
/* { dg-require-effective-target sync_long_long } */
|
||||
/* { dg-require-effective-target sync_long_long_runtime } */
|
||||
/* { dg-options "" } */
|
||||
|
||||
/* Test the execution of __atomic_compare_exchange_n builtin for a long_long. */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Test __atomic routines for existence and proper execution on 16 byte
|
||||
values with each valid memory model. */
|
||||
/* { dg-do run } */
|
||||
/* { dg-require-effective-target sync_int_128 } */
|
||||
/* { dg-require-effective-target sync_int_128_runtime } */
|
||||
/* { dg-options "-mcx16" { target { i?86-*-* x86_64-*-* } } } */
|
||||
|
||||
/* Test the execution of __atomic_compare_exchange_n builtin for an int_128. */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Test __atomic routines for existence and proper execution on 8 byte
|
||||
values with each valid memory model. */
|
||||
/* { dg-do run } */
|
||||
/* { dg-require-effective-target sync_long_long } */
|
||||
/* { dg-require-effective-target sync_long_long_runtime } */
|
||||
/* { dg-options "" } */
|
||||
|
||||
/* Test the execution of the __atomic_X builtin for a long_long. */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Test __atomic routines for existence and proper execution on 16 byte
|
||||
values with each valid memory model. */
|
||||
/* { dg-do run } */
|
||||
/* { dg-require-effective-target sync_int_128 } */
|
||||
/* { dg-require-effective-target sync_int_128_runtime } */
|
||||
/* { dg-options "-mcx16" { target { i?86-*-* x86_64-*-* } } } */
|
||||
|
||||
/* Test the execution of the __atomic_X builtin for a 16 byte value. */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Test __atomic routines for existence and proper execution on 8 byte
|
||||
values with each valid memory model. */
|
||||
/* { dg-do run } */
|
||||
/* { dg-require-effective-target sync_long_long } */
|
||||
/* { dg-require-effective-target sync_long_long_runtime } */
|
||||
/* { dg-options "" } */
|
||||
|
||||
extern void abort(void);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Test __atomic routines for existence and proper execution on 16 byte
|
||||
values with each valid memory model. */
|
||||
/* { dg-do run } */
|
||||
/* { dg-require-effective-target sync_int_128 } */
|
||||
/* { dg-require-effective-target sync_int_128_runtime } */
|
||||
/* { dg-options "-mcx16" { target { i?86-*-* x86_64-*-* } } } */
|
||||
|
||||
extern void abort(void);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Test __atomic routines for existence and proper execution on 8 byte
|
||||
values with each valid memory model. */
|
||||
/* { dg-do run } */
|
||||
/* { dg-require-effective-target sync_long_long } */
|
||||
/* { dg-require-effective-target sync_long_long_runtime } */
|
||||
/* { dg-options "" } */
|
||||
|
||||
/* Test the execution of the __atomic_*OP builtin routines for long long. */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Test __atomic routines for existence and proper execution on 16 byte
|
||||
values with each valid memory model. */
|
||||
/* { dg-do run } */
|
||||
/* { dg-require-effective-target sync_int_128 } */
|
||||
/* { dg-require-effective-target sync_int_128_runtime } */
|
||||
/* { dg-options "-mcx16" { target { i?86-*-* x86_64-*-* } } } */
|
||||
|
||||
/* Test the execution of the __atomic_*OP builtin routines for an int_128. */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Test __atomic routines for existence and proper execution on 8 byte
|
||||
values with each valid memory model. */
|
||||
/* { dg-do run } */
|
||||
/* { dg-require-effective-target sync_long_long } */
|
||||
/* { dg-require-effective-target sync_long_long_runtime } */
|
||||
/* { dg-options "" } */
|
||||
|
||||
/* Test the execution of the __atomic_store_n builtin for a long long. */
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* Test __atomic routines for existence and proper execution on 16 byte
|
||||
values with each valid memory model. */
|
||||
/* { dg-do run } */
|
||||
/* { dg-require-effective-target sync_int_128 } */
|
||||
/* { dg-require-effective-target sync_int_128_runtime } */
|
||||
/* { dg-options "-mcx16" { target { i?86-*-* x86_64-*-* } } } */
|
||||
|
||||
/* Test the execution of the __atomic_store_n builtin for a 16 byte value. */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do run } */
|
||||
/* { dg-require-effective-target sync_longlong } */
|
||||
/* { dg-require-effective-target sync_long_long_runtime } */
|
||||
/* { dg-options "-std=gnu99" } */
|
||||
/* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */
|
||||
/* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do run } */
|
||||
/* { dg-require-effective-target sync_longlong } */
|
||||
/* { dg-require-effective-target sync_long_long_runtime } */
|
||||
/* { dg-require-effective-target pthread_h } */
|
||||
/* { dg-require-effective-target pthread } */
|
||||
/* { dg-options "-pthread -std=gnu99" } */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do link } */
|
||||
/* { dg-require-effective-target sync_int_128 } */
|
||||
/* { dg-require-effective-target sync_int_128_runtime } */
|
||||
/* { dg-options "-mcx16" { target { x86_64-*-* i?86-*-* } } } */
|
||||
/* { dg-final { simulate-thread } } */
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do link } */
|
||||
/* { dg-require-effective-target sync_long_long } */
|
||||
/* { dg-require-effective-target sync_long_long_runtime } */
|
||||
/* { dg-options "" } */
|
||||
/* { dg-final { simulate-thread } } */
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do link } */
|
||||
/* { dg-require-effective-target sync_int_128 } */
|
||||
/* { dg-require-effective-target sync_int_128_runtime } */
|
||||
/* { dg-options "-mcx16" { target { x86_64-*-* i?86-*-* } } } */
|
||||
/* { dg-final { simulate-thread } } */
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* { dg-do link } */
|
||||
/* { dg-require-effective-target sync_long_long } */
|
||||
/* { dg-require-effective-target sync_long_long_runtime } */
|
||||
/* { dg-options "" } */
|
||||
/* { dg-final { simulate-thread } } */
|
||||
|
||||
|
@ -3620,17 +3620,80 @@ proc check_effective_target_sync_int_128 { } {
|
||||
}
|
||||
}
|
||||
|
||||
# Return 1 if the target supports atomic operations on "int_128" values
|
||||
# and can execute them.
|
||||
|
||||
proc check_effective_target_sync_int_128_runtime { } {
|
||||
if { ([istarget x86_64-*-*] || [istarget i?86-*-*])
|
||||
&& ![is-effective-target ia32] } {
|
||||
return [check_cached_effective_target sync_int_128_available {
|
||||
check_runtime_nocache sync_int_128_available {
|
||||
#include "cpuid.h"
|
||||
int main ()
|
||||
{
|
||||
unsigned int eax, ebx, ecx, edx;
|
||||
if (__get_cpuid (1, &eax, &ebx, &ecx, &edx))
|
||||
return !(ecx & bit_CMPXCHG16B);
|
||||
return 1;
|
||||
}
|
||||
} ""
|
||||
}]
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
# Return 1 if the target supports atomic operations on "long long".
|
||||
|
||||
proc check_effective_target_sync_long_long { } {
|
||||
if { ([istarget x86_64-*-*] || [istarget i?86-*-*])
|
||||
&& ![is-effective-target ia32] } {
|
||||
&& ![is-effective-target ia32]
|
||||
|| [istarget arm*-*-*] } {
|
||||
return 1
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
# Return 1 if the target supports atomic operations on "long long"
|
||||
# and can execute them.
|
||||
|
||||
proc check_effective_target_sync_long_long_runtime { } {
|
||||
if { ([istarget x86_64-*-*] || [istarget i?86-*-*])
|
||||
&& ![is-effective-target ia32] } {
|
||||
return [check_cached_effective_target sync_long_long_available {
|
||||
check_runtime_nocache sync_long_long_available {
|
||||
#include "cpuid.h"
|
||||
int main ()
|
||||
{
|
||||
unsigned int eax, ebx, ecx, edx;
|
||||
if (__get_cpuid (1, &eax, &ebx, &ecx, &edx))
|
||||
return !(edx & bit_CMPXCHG8B);
|
||||
return 1;
|
||||
}
|
||||
} ""
|
||||
}]
|
||||
} elseif { [istarget arm*-*-linux-gnueabi] } {
|
||||
return [check_runtime sync_longlong_runtime {
|
||||
#include <stdlib.h>
|
||||
int main ()
|
||||
{
|
||||
long long l1;
|
||||
|
||||
if (sizeof (long long) != 8)
|
||||
exit (1);
|
||||
|
||||
/* Just check for native; checking for kernel fallback is tricky. */
|
||||
asm volatile ("ldrexd r0,r1, [%0]" : : "r" (&l1) : "r0", "r1");
|
||||
|
||||
exit (0);
|
||||
}
|
||||
} "" ]
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
# Return 1 if the target supports atomic operations on "int" and "long".
|
||||
|
||||
proc check_effective_target_sync_int_long { } {
|
||||
@ -3662,31 +3725,6 @@ proc check_effective_target_sync_int_long { } {
|
||||
return $et_sync_int_long_saved
|
||||
}
|
||||
|
||||
# Return 1 if the target supports atomic operations on "long long" and can
|
||||
# execute them
|
||||
# So far only put checks in for ARM, others may want to add their own
|
||||
proc check_effective_target_sync_longlong { } {
|
||||
return [check_runtime sync_longlong_runtime {
|
||||
#include <stdlib.h>
|
||||
int main ()
|
||||
{
|
||||
long long l1;
|
||||
|
||||
if (sizeof (long long) != 8)
|
||||
exit (1);
|
||||
|
||||
#ifdef __arm__
|
||||
/* Just check for native; checking for kernel fallback is tricky. */
|
||||
asm volatile ("ldrexd r0,r1, [%0]" : : "r" (&l1) : "r0", "r1");
|
||||
#else
|
||||
# error "Add other suitable archs here"
|
||||
#endif
|
||||
|
||||
exit (0);
|
||||
}
|
||||
} "" ]
|
||||
}
|
||||
|
||||
# Return 1 if the target supports atomic operations on "char" and "short".
|
||||
|
||||
proc check_effective_target_sync_char_short { } {
|
||||
|
Loading…
Reference in New Issue
Block a user