Hi,

I observed today that { dg-require-effective-target vect_double } was
unintentionally excluding all powerpc* targets.  This patch corrects the
situation by enabling vect_double when the VSX architectural support is
present, which provides the vector double type.  As a result of this
change, I observed one XPASS.  This is due to vect_no_align being used
where { vect_no_align && { ! vect_hw_misalign } } is actually desired.
(I made a number of similar changes back in April, but didn't catch this
one at the time.)

Tested on powerpc64-unknown-linux-gnu and powerpc64le-unknown-linux-gnu
with no regressions.  Is this ok for trunk?

Thanks,
Bill


2015-08-27  Bill Schmidt  <wschm...@linux.vnet.ibm.com>

        * lib/target-supports.exp (check-effective_target_vect_double):
        Enable for Power targets with VSX hardware available.
        * gfortran.dg/vect/O3-pr49957.f: Replace vect_no_align with
        vect_no_align && { ! vect_hw_misalign }.


Index: gcc/testsuite/gfortran.dg/vect/O3-pr49957.f
===================================================================
--- gcc/testsuite/gfortran.dg/vect/O3-pr49957.f (revision 227258)
+++ gcc/testsuite/gfortran.dg/vect/O3-pr49957.f (working copy)
@@ -13,4 +13,4 @@
          enddo
       return
       end
-! { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail 
vect_no_align } } }
+! { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { 
vect_no_align && { ! vect_hw_misalign } } } } }
Index: gcc/testsuite/lib/target-supports.exp
===================================================================
--- gcc/testsuite/lib/target-supports.exp       (revision 227258)
+++ gcc/testsuite/lib/target-supports.exp       (working copy)
@@ -3711,6 +3711,8 @@ proc check_effective_target_vect_double { } {
            }
        } elseif { [istarget spu-*-*] } {
           set et_vect_double_saved 1
+       } elseif { [istarget powerpc*-*-*] && [check_vsx_hw_available] } {
+          set et_vect_double_saved 1
        }
     }
 


Reply via email to