Hello!

Availability of long long and int_128 sync instructions can vary on
x86, due to -m32, so don't cache the result. The problem can be
triggered with:

make -k check RUNTESTFLAGS="--target_board=unix\{,-m32\}"

FAIL: gcc.dg/atomic-compare-exchange-5.c (test for excess errors)
WARNING: gcc.dg/atomic-compare-exchange-5.c compilation failed to
produce executable
FAIL: gcc.dg/atomic-exchange-5.c (test for excess errors)
WARNING: gcc.dg/atomic-exchange-5.c compilation failed to produce executable
FAIL: gcc.dg/atomic-load-5.c (test for excess errors)
WARNING: gcc.dg/atomic-load-5.c compilation failed to produce executable
FAIL: gcc.dg/atomic-op-5.c (test for excess errors)
WARNING: gcc.dg/atomic-op-5.c compilation failed to produce executable
FAIL: gcc.dg/atomic-store-5.c (test for excess errors)
WARNING: gcc.dg/atomic-store-5.c compilation failed to produce executable
FAIL: gcc.dg/simulate-thread/atomic-load-int128.c  -O0 -g  (test for
excess errors)
FAIL: gcc.dg/simulate-thread/atomic-load-int128.c  -O1 -g  (test for
excess errors)
FAIL: gcc.dg/simulate-thread/atomic-load-int128.c  -O2 -g  (test for
excess errors)
FAIL: gcc.dg/simulate-thread/atomic-load-int128.c  -O3 -g  (test for
excess errors)
FAIL: gcc.dg/simulate-thread/atomic-load-int128.c  -Os -g  (test for
excess errors)
FAIL: gcc.dg/simulate-thread/atomic-other-int128.c  -O0 -g  (test for
excess errors)
FAIL: gcc.dg/simulate-thread/atomic-other-int128.c  -O1 -g  (test for
excess errors)
FAIL: gcc.dg/simulate-thread/atomic-other-int128.c  -O2 -g  (test for
excess errors)
FAIL: gcc.dg/simulate-thread/atomic-other-int128.c  -O3 -g  (test for
excess errors)
FAIL: gcc.dg/simulate-thread/atomic-other-int128.c  -Os -g  (test for
excess errors)

2011-11-07  Uros Bizjak  <ubiz...@gmail.com>

        * lib/target-supports.exp (check_effective_target_sync_int_128):
        Don't cache the result.
        (check_effective_target_sync_long_long): Ditto.

Tested on x86_64-pc-linux-gnu {,-m32}, committed to SVN.

Uros.
Index: lib/target-supports.exp
===================================================================
--- lib/target-supports.exp     (revision 181080)
+++ lib/target-supports.exp     (working copy)
@@ -3542,39 +3542,23 @@
 # Return 1 if the target supports atomic operations on "int_128" values.
 
 proc check_effective_target_sync_int_128 { } {
-    global et_sync_int_128_saved
-
-    if [info exists et_sync_int_128_saved] {
-        verbose "check_effective_target_sync_int_128: using cached result" 2
+    if { ([istarget x86_64-*-*] || [istarget i?86-*-*])
+        && ![is-effective-target ia32] } {
+       return 1
     } else {
-        set et_sync_int_128_saved 0
-        if { ([istarget x86_64-*-*] || [istarget i?86-*-*])
-            && ![is-effective-target ia32] } {
-           set et_sync_int_128_saved 1
-        }
+       return 0
     }
-
-    verbose "check_effective_target_sync_int_128: returning 
$et_sync_int_128_saved" 2
-    return $et_sync_int_128_saved
 }
 
 # Return 1 if the target supports atomic operations on "long long".
 
 proc check_effective_target_sync_long_long { } {
-    global et_sync_long_long_saved
-
-    if [info exists et_sync_long_long_saved] {
-        verbose "check_effective_target_sync_long_long: using cached result" 2
+    if { ([istarget x86_64-*-*] || [istarget i?86-*-*])
+        && ![is-effective-target ia32] } {
+       return 1
     } else {
-        set et_sync_long_long_saved 0
-        if { ([istarget x86_64-*-*] || [istarget i?86-*-*])
-            && ![is-effective-target ia32] } {
-           set et_sync_long_long_saved 1
-        }
+       return 0
     }
-
-    verbose "check_effective_target_sync_long_long: returning 
$et_sync_long_long_saved" 2
-    return $et_sync_long_long_saved
 }
 
 # Return 1 if the target supports atomic operations on "int" and "long".

Reply via email to