From 0b6b8f85a3c39fd9a5673be73ae6c5dde1850306 Mon Sep 17 00:00:00 2001 From: Robert Suchanek Date: Wed, 24 Aug 2016 07:53:07 +0000 Subject: [PATCH] re PR testsuite/77317 (x86_64 --target_board=''unix/ unix/-m32'' parallel testrun gives inconsistent results in gcc.dg/vect) Fix PR testsuite/77317 gcc/testsuite/ * lib/target-supports.exp (check_effective_target_vect_aligned_arrays): Don't cache the result. (check_effective_target_vect_natural_alignment): Ditto. (check_effective_target_vector_alignment_reachable): Ditto. (check_effective_target_vector_alignment_reachable_for_64bit): Ditto. From-SVN: r239730 --- gcc/testsuite/ChangeLog | 9 +++ gcc/testsuite/lib/target-supports.exp | 101 ++++++++------------------ 2 files changed, 39 insertions(+), 71 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 38b0d502a35..fef690908f4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2016-08-24 Robert Suchanek + + PR testsuite/77317 + * lib/target-supports.exp + (check_effective_target_vect_aligned_arrays): Don't cache the result. + (check_effective_target_vect_natural_alignment): Ditto. + (check_effective_target_vector_alignment_reachable): Ditto. + (check_effective_target_vector_alignment_reachable_for_64bit): Ditto. + 2016-08-23 Ian Lance Taylor * gcc.target/s390/nolrl-1.c: Don't match the file name. diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 533d3a668d8..0dabea08501 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -5309,32 +5309,22 @@ proc check_effective_target_vect_hw_misalign { } { # Return 1 if arrays are aligned to the vector alignment # boundary, 0 otherwise. -# -# This won't change for different subtargets so cache the result. proc check_effective_target_vect_aligned_arrays { } { - global et_vect_aligned_arrays_saved - global et_index - - if [info exists et_vect_aligned_arrays_saved($et_index)] { - verbose "check_effective_target_vect_aligned_arrays:\ - using cached result" 2 - } else { - set et_vect_aligned_arrays_saved($et_index) 0 - if { ([istarget x86_64-*-*] || [istarget i?86-*-*]) } { - if { ([is-effective-target lp64] - && ( ![check_avx_available] - || [check_prefer_avx128])) } { - set et_vect_aligned_arrays_saved($et_index) 1 - } - } - if [istarget spu-*-*] { - set et_vect_aligned_arrays_saved($et_index) 1 + set et_vect_aligned_arrays 0 + if { ([istarget x86_64-*-*] || [istarget i?86-*-*]) } { + if { ([is-effective-target lp64] + && ( ![check_avx_available] + || [check_prefer_avx128])) } { + set et_vect_aligned_arrays 1 } } + if [istarget spu-*-*] { + set et_vect_aligned_arrays 1 + } verbose "check_effective_target_vect_aligned_arrays:\ - returning $et_vect_aligned_arrays_saved($et_index)" 2 - return $et_vect_aligned_arrays_saved($et_index) + returning $et_vect_aligned_arrays" 2 + return $et_vect_aligned_arrays } # Return 1 if types of size 32 bit or less are naturally aligned @@ -5382,74 +5372,43 @@ proc check_effective_target_natural_alignment_64 { } { # Return 1 if all vector types are naturally aligned (aligned to their # type-size), 0 otherwise. -# -# This won't change for different subtargets so cache the result. proc check_effective_target_vect_natural_alignment { } { - global et_vect_natural_alignment_saved - global et_index - - if [info exists et_vect_natural_alignment_saved($et_index)] { - verbose "check_effective_target_vect_natural_alignment: using cached result" 2 - } else { - set et_vect_natural_alignment_saved($et_index) 1 - if { [check_effective_target_arm_eabi] - || [istarget nvptx-*-*] - || [istarget s390*-*-*] } { - set et_vect_natural_alignment_saved($et_index) 0 - } + set et_vect_natural_alignment 1 + if { [check_effective_target_arm_eabi] + || [istarget nvptx-*-*] + || [istarget s390*-*-*] } { + set et_vect_natural_alignment 0 } verbose "check_effective_target_vect_natural_alignment:\ - returning $et_vect_natural_alignment_saved($et_index)" 2 - return $et_vect_natural_alignment_saved($et_index) + returning $et_vect_natural_alignment" 2 + return $et_vect_natural_alignment } # Return 1 if vector alignment (for types of size 32 bit or less) is reachable, 0 otherwise. -# -# This won't change for different subtargets so cache the result. proc check_effective_target_vector_alignment_reachable { } { - global et_vector_alignment_reachable_saved - global et_index - - if [info exists et_vector_alignment_reachable_saved($et_index)] { - verbose "check_effective_target_vector_alignment_reachable:\ - using cached result" 2 - } else { - if { [check_effective_target_vect_aligned_arrays] - || [check_effective_target_natural_alignment_32] } { - set et_vector_alignment_reachable_saved($et_index) 1 - } else { - set et_vector_alignment_reachable_saved($et_index) 0 - } + set et_vector_alignment_reachable 0 + if { [check_effective_target_vect_aligned_arrays] + || [check_effective_target_natural_alignment_32] } { + set et_vector_alignment_reachable 1 } verbose "check_effective_target_vector_alignment_reachable:\ - returning $et_vector_alignment_reachable_saved($et_index)" 2 - return $et_vector_alignment_reachable_saved($et_index) + returning $et_vector_alignment_reachable" 2 + return $et_vector_alignment_reachable } # Return 1 if vector alignment for 64 bit is reachable, 0 otherwise. -# -# This won't change for different subtargets so cache the result. proc check_effective_target_vector_alignment_reachable_for_64bit { } { - global et_vector_alignment_reachable_for_64bit_saved - global et_index - - if [info exists et_vector_alignment_reachable_for_64bit_saved($et_index)] { - verbose "check_effective_target_vector_alignment_reachable_for_64bit:\ - using cached result" 2 - } else { - if { [check_effective_target_vect_aligned_arrays] - || [check_effective_target_natural_alignment_64] } { - set et_vector_alignment_reachable_for_64bit_saved($et_index) 1 - } else { - set et_vector_alignment_reachable_for_64bit_saved($et_index) 0 - } + set et_vector_alignment_reachable_for_64bit 0 + if { [check_effective_target_vect_aligned_arrays] + || [check_effective_target_natural_alignment_64] } { + set et_vector_alignment_reachable_for_64bit 1 } verbose "check_effective_target_vector_alignment_reachable_for_64bit:\ - returning $et_vector_alignment_reachable_for_64bit_saved($et_index)" 2 - return $et_vector_alignment_reachable_for_64bit_saved($et_index) + returning $et_vector_alignment_reachable_for_64bit" 2 + return $et_vector_alignment_reachable_for_64bit } # Return 1 if the target only requires element alignment for vector accesses -- 2.30.2