diff options
author | Andreas Krebbel <krebbel@gcc.gnu.org> | 2017-04-25 07:43:49 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2017-04-25 07:43:49 +0000 |
commit | 854dbb3cb1b51ccc03ea027c49005aa423d74b96 (patch) | |
tree | 00d98ef00cfe09f0e84eb1774debc0b5928e4244 /gcc/testsuite/gfortran.fortran-torture | |
parent | 3cb9ee2f9c10a04a7498be3279897b46669c61dc (diff) |
S/390: PR80464: Split MEM->GPR vector moves
We do this already for TImode values but it was missing for vector
modes.
gcc/ChangeLog:
2017-04-25 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
PR target/80464
* config/s390/vector.md: Split MEM->GPR vector moves for
non-s_operand addresses.
gcc/testsuite/ChangeLog:
2017-04-25 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
PR target/80464
* gfortran.fortran-torture/compile/pr80464.f90: New test.
From-SVN: r247134
Diffstat (limited to 'gcc/testsuite/gfortran.fortran-torture')
-rw-r--r-- | gcc/testsuite/gfortran.fortran-torture/compile/pr80464.f90 | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/pr80464.f90 b/gcc/testsuite/gfortran.fortran-torture/compile/pr80464.f90 new file mode 100644 index 00000000000..d3a3943b59f --- /dev/null +++ b/gcc/testsuite/gfortran.fortran-torture/compile/pr80464.f90 @@ -0,0 +1,39 @@ +subroutine bla(a,bar,lb,ne,nt,v,b) + character*8 lb + integer bar(20),foo(8,5) + real*8 a(3,*),x(3,8),v(0:3,*) + if(lb(4:4).eq.'3') then + n=8 + elseif(lb(4:5).eq.'10') then + n=10 + ns=6 + m=4 + endif + call blub(id) + do + if(id.eq.0) exit + if(lb(4:4).eq.'6') then + m=1 + endif + if((n.eq.20).or.(n.eq.8)) then + if(b.eq.0) then + do i=1,ns + do j=1,3 + x(j,i)=a(j,bar(foo(i,ig))) + enddo + enddo + else + do i=1,ns + do j=1,3 + x(j,i)=a(j,bar(foo(i,ig)))+v(j,bar(foo(i,ig))) + enddo + enddo + endif + endif + do i=1,m + if(lb(4:5).eq.'1E') then + call blab(x) + endif + enddo + enddo +end subroutine bla |