Commit 0b6b8f85 by Robert Suchanek Committed by Robert Suchanek

re PR testsuite/77317 (x86_64 --target_board=''unix/ unix/-m32'' parallel…

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
parent a4892ab4
2016-08-24 Robert Suchanek <robert.suchanek@imgtec.com>
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 <iant@golang.org> 2016-08-23 Ian Lance Taylor <iant@golang.org>
* gcc.target/s390/nolrl-1.c: Don't match the file name. * gcc.target/s390/nolrl-1.c: Don't match the file name.
......
...@@ -5309,32 +5309,22 @@ proc check_effective_target_vect_hw_misalign { } { ...@@ -5309,32 +5309,22 @@ proc check_effective_target_vect_hw_misalign { } {
# Return 1 if arrays are aligned to the vector alignment # Return 1 if arrays are aligned to the vector alignment
# boundary, 0 otherwise. # boundary, 0 otherwise.
#
# This won't change for different subtargets so cache the result.
proc check_effective_target_vect_aligned_arrays { } { proc check_effective_target_vect_aligned_arrays { } {
global et_vect_aligned_arrays_saved set et_vect_aligned_arrays 0
global et_index if { ([istarget x86_64-*-*] || [istarget i?86-*-*]) } {
if { ([is-effective-target lp64]
if [info exists et_vect_aligned_arrays_saved($et_index)] { && ( ![check_avx_available]
verbose "check_effective_target_vect_aligned_arrays:\ || [check_prefer_avx128])) } {
using cached result" 2 set et_vect_aligned_arrays 1
} 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
} }
} }
if [istarget spu-*-*] {
set et_vect_aligned_arrays 1
}
verbose "check_effective_target_vect_aligned_arrays:\ verbose "check_effective_target_vect_aligned_arrays:\
returning $et_vect_aligned_arrays_saved($et_index)" 2 returning $et_vect_aligned_arrays" 2
return $et_vect_aligned_arrays_saved($et_index) return $et_vect_aligned_arrays
} }
# Return 1 if types of size 32 bit or less are naturally aligned # Return 1 if types of size 32 bit or less are naturally aligned
...@@ -5382,74 +5372,43 @@ proc check_effective_target_natural_alignment_64 { } { ...@@ -5382,74 +5372,43 @@ proc check_effective_target_natural_alignment_64 { } {
# Return 1 if all vector types are naturally aligned (aligned to their # Return 1 if all vector types are naturally aligned (aligned to their
# type-size), 0 otherwise. # type-size), 0 otherwise.
#
# This won't change for different subtargets so cache the result.
proc check_effective_target_vect_natural_alignment { } { proc check_effective_target_vect_natural_alignment { } {
global et_vect_natural_alignment_saved set et_vect_natural_alignment 1
global et_index if { [check_effective_target_arm_eabi]
|| [istarget nvptx-*-*]
if [info exists et_vect_natural_alignment_saved($et_index)] { || [istarget s390*-*-*] } {
verbose "check_effective_target_vect_natural_alignment: using cached result" 2 set et_vect_natural_alignment 0
} 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
}
} }
verbose "check_effective_target_vect_natural_alignment:\ verbose "check_effective_target_vect_natural_alignment:\
returning $et_vect_natural_alignment_saved($et_index)" 2 returning $et_vect_natural_alignment" 2
return $et_vect_natural_alignment_saved($et_index) return $et_vect_natural_alignment
} }
# Return 1 if vector alignment (for types of size 32 bit or less) is reachable, 0 otherwise. # 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 { } { proc check_effective_target_vector_alignment_reachable { } {
global et_vector_alignment_reachable_saved set et_vector_alignment_reachable 0
global et_index if { [check_effective_target_vect_aligned_arrays]
|| [check_effective_target_natural_alignment_32] } {
if [info exists et_vector_alignment_reachable_saved($et_index)] { set et_vector_alignment_reachable 1
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
}
} }
verbose "check_effective_target_vector_alignment_reachable:\ verbose "check_effective_target_vector_alignment_reachable:\
returning $et_vector_alignment_reachable_saved($et_index)" 2 returning $et_vector_alignment_reachable" 2
return $et_vector_alignment_reachable_saved($et_index) return $et_vector_alignment_reachable
} }
# Return 1 if vector alignment for 64 bit is reachable, 0 otherwise. # 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 { } { proc check_effective_target_vector_alignment_reachable_for_64bit { } {
global et_vector_alignment_reachable_for_64bit_saved set et_vector_alignment_reachable_for_64bit 0
global et_index if { [check_effective_target_vect_aligned_arrays]
|| [check_effective_target_natural_alignment_64] } {
if [info exists et_vector_alignment_reachable_for_64bit_saved($et_index)] { set et_vector_alignment_reachable_for_64bit 1
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
}
} }
verbose "check_effective_target_vector_alignment_reachable_for_64bit:\ verbose "check_effective_target_vector_alignment_reachable_for_64bit:\
returning $et_vector_alignment_reachable_for_64bit_saved($et_index)" 2 returning $et_vector_alignment_reachable_for_64bit" 2
return $et_vector_alignment_reachable_for_64bit_saved($et_index) return $et_vector_alignment_reachable_for_64bit
} }
# Return 1 if the target only requires element alignment for vector accesses # Return 1 if the target only requires element alignment for vector accesses
......
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