Commit 9e08718a by Uros Bizjak Committed by Uros Bizjak

re PR testsuite/51258 (64-bit gcc.dg/atomic-compare-exchange-5.c link failure on…

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_long_long): Also supported on 32bit
	x86 targets.  Add comment about required dg-options.
	Add alpha*-*-* targets.
	(check_effective_target_sync_long_long_runtime): Ditto.

	* gcc.dg/atomic-op-4.c (dg-options): Add -march=pentium for
	32bit x86 targets.
	* 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: r181728
parent bf71de94
...@@ -2,6 +2,26 @@ ...@@ -2,6 +2,26 @@
PR testsuite/51258 PR testsuite/51258
* lib/target-supports.exp * lib/target-supports.exp
(check_effective_target_sync_long_long): Also supported on 32bit
x86 targets. Add comment about required dg-options.
Add alpha*-*-* targets.
(check_effective_target_sync_long_long_runtime): Ditto.
* gcc.dg/atomic-op-4.c (dg-options): Add -march=pentium for
32bit x86 targets.
* 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 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_int_128_runtime): New procedure.
(check_effective_target_sync_long_long_runtime): Ditto. (check_effective_target_sync_long_long_runtime): Ditto.
(check_effective_target_sync_long_long): Add arm*-*-*. (check_effective_target_sync_long_long): Add arm*-*-*.
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
/* { dg-do run } */ /* { dg-do run } */
/* { dg-require-effective-target sync_long_long_runtime } */ /* { dg-require-effective-target sync_long_long_runtime } */
/* { dg-options "" } */ /* { dg-options "" } */
/* { dg-options "-march=pentium" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
/* Test the execution of __atomic_compare_exchange_n builtin for a long_long. */ /* Test the execution of __atomic_compare_exchange_n builtin for a long_long. */
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
/* { dg-do run } */ /* { dg-do run } */
/* { dg-require-effective-target sync_long_long_runtime } */ /* { dg-require-effective-target sync_long_long_runtime } */
/* { dg-options "" } */ /* { dg-options "" } */
/* { dg-options "-march=pentium" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
/* Test the execution of the __atomic_X builtin for a long_long. */ /* Test the execution of the __atomic_X builtin for a long_long. */
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
/* { dg-do run } */ /* { dg-do run } */
/* { dg-require-effective-target sync_long_long_runtime } */ /* { dg-require-effective-target sync_long_long_runtime } */
/* { dg-options "" } */ /* { dg-options "" } */
/* { dg-options "-march=pentium" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
extern void abort(void); extern void abort(void);
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
/* { dg-do run } */ /* { dg-do run } */
/* { dg-require-effective-target sync_long_long_runtime } */ /* { dg-require-effective-target sync_long_long_runtime } */
/* { dg-options "" } */ /* { dg-options "" } */
/* { dg-options "-march=pentium" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
/* Test the execution of the __atomic_*OP builtin routines for long long. */ /* Test the execution of the __atomic_*OP builtin routines for long long. */
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
/* { dg-do run } */ /* { dg-do run } */
/* { dg-require-effective-target sync_long_long_runtime } */ /* { dg-require-effective-target sync_long_long_runtime } */
/* { dg-options "" } */ /* { dg-options "" } */
/* { dg-options "-march=pentium" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
/* Test the execution of the __atomic_store_n builtin for a long long. */ /* Test the execution of the __atomic_store_n builtin for a long long. */
......
/* { dg-do run } */ /* { dg-do run } */
/* { dg-require-effective-target sync_long_long_runtime } */ /* { dg-require-effective-target sync_long_long_runtime } */
/* { dg-options "-std=gnu99" } */ /* { dg-options "-std=gnu99" } */
/* { dg-additional-options "-march=pentium" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
/* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */ /* { 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 } */ /* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" "" { target *-*-* } 0 } */
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
/* { dg-require-effective-target pthread_h } */ /* { dg-require-effective-target pthread_h } */
/* { dg-require-effective-target pthread } */ /* { dg-require-effective-target pthread } */
/* { dg-options "-pthread -std=gnu99" } */ /* { dg-options "-pthread -std=gnu99" } */
/* { dg-additional-options "-march=pentium" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
/* test of long long atomic ops performed in parallel in 3 pthreads /* test of long long atomic ops performed in parallel in 3 pthreads
david.gilbert@linaro.org */ david.gilbert@linaro.org */
......
/* { dg-do link } */ /* { dg-do link } */
/* { dg-require-effective-target sync_long_long_runtime } */ /* { dg-require-effective-target sync_long_long_runtime } */
/* { dg-options "" } */ /* { dg-options "" } */
/* { dg-options "-march=pentium" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
/* { dg-final { simulate-thread } } */ /* { dg-final { simulate-thread } } */
......
/* { dg-do link } */ /* { dg-do link } */
/* { dg-require-effective-target sync_long_long_runtime } */ /* { dg-require-effective-target sync_long_long_runtime } */
/* { dg-options "" } */ /* { dg-options "" } */
/* { dg-options "-march=pentium" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
/* { dg-final { simulate-thread } } */ /* { dg-final { simulate-thread } } */
......
...@@ -3644,11 +3644,14 @@ proc check_effective_target_sync_int_128_runtime { } { ...@@ -3644,11 +3644,14 @@ proc check_effective_target_sync_int_128_runtime { } {
} }
# Return 1 if the target supports atomic operations on "long long". # Return 1 if the target supports atomic operations on "long long".
#
# Note: 32bit x86 targets require -march=pentium in dg-options.
proc check_effective_target_sync_long_long { } { proc check_effective_target_sync_long_long { } {
if { ([istarget x86_64-*-*] || [istarget i?86-*-*]) if { [istarget x86_64-*-*]
&& ![is-effective-target ia32] || [istarget i?86-*-*])
|| [istarget arm*-*-*] } { || [istarget arm*-*-*]
|| [istarget alpha*-*-*] } {
return 1 return 1
} else { } else {
return 0 return 0
...@@ -3657,10 +3660,12 @@ proc check_effective_target_sync_long_long { } { ...@@ -3657,10 +3660,12 @@ proc check_effective_target_sync_long_long { } {
# Return 1 if the target supports atomic operations on "long long" # Return 1 if the target supports atomic operations on "long long"
# and can execute them. # and can execute them.
#
# Note: 32bit x86 targets require -march=pentium in dg-options.
proc check_effective_target_sync_long_long_runtime { } { proc check_effective_target_sync_long_long_runtime { } {
if { ([istarget x86_64-*-*] || [istarget i?86-*-*]) if { [istarget x86_64-*-*]
&& ![is-effective-target ia32] } { || [istarget i?86-*-*] } {
return [check_cached_effective_target sync_long_long_available { return [check_cached_effective_target sync_long_long_available {
check_runtime_nocache sync_long_long_available { check_runtime_nocache sync_long_long_available {
#include "cpuid.h" #include "cpuid.h"
...@@ -3689,6 +3694,8 @@ proc check_effective_target_sync_long_long_runtime { } { ...@@ -3689,6 +3694,8 @@ proc check_effective_target_sync_long_long_runtime { } {
exit (0); exit (0);
} }
} "" ] } "" ]
} elseif { [istarget alpha*-*-*] } {
return 1
} else { } else {
return 0 return 0
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment