Testcases for vectorizer peeling

Message ID 20231103145431.910551348C@imap2.suse-dmz.suse.de
State Accepted
Headers
Series Testcases for vectorizer peeling |

Checks

Context Check Description
snail/gcc-patch-check success Github commit url

Commit Message

Richard Biener Nov. 3, 2023, 2:54 p.m. UTC
  The following exercise otherwise not exercised paths in the
vectorizer peeling code, resulting in CPU 2017 build ICEs
when patching but no fallout in the testsuite.

tested on x86_64-unknown-linux-gnu, pushed.

	* gfortran.dg/20231103-1.f90: New testcase.
	* gfortran.dg/20231103-2.f90: Likewise.
---
 gcc/testsuite/gfortran.dg/20231103-1.f90 | 22 ++++++++++++++++++++++
 gcc/testsuite/gfortran.dg/20231103-2.f90 | 22 ++++++++++++++++++++++
 2 files changed, 44 insertions(+)
 create mode 100644 gcc/testsuite/gfortran.dg/20231103-1.f90
 create mode 100644 gcc/testsuite/gfortran.dg/20231103-2.f90
  

Patch

diff --git a/gcc/testsuite/gfortran.dg/20231103-1.f90 b/gcc/testsuite/gfortran.dg/20231103-1.f90
new file mode 100644
index 00000000000..61ccf5c5e9d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/20231103-1.f90
@@ -0,0 +1,22 @@ 
+! { dg-do compile }
+! { dg-options "-Ofast" }
+SUBROUTINE sedi_1D(QX1d,  DZ1d,kdir,BX1d,kbot,ktop)
+  real, dimension(:) :: QX1d,DZ1d
+  real, dimension(size(QX1d))  :: VVQ
+  logical                            BX_present
+  do k= kbot,ktop,kdir
+     VVQ= VV_Q0
+  enddo
+  Vxmaxx= min0
+  if (kdir==1) then
+     dzMIN = minval(DZ1d)
+  endif
+  npassx=   Vxmaxx/dzMIN
+  DO nnn= 1,npassx
+     if (BX_present) then
+       do k= ktop,kdir
+         BX1d= iDZ1d0
+       enddo
+     endif
+  ENDDO
+END
diff --git a/gcc/testsuite/gfortran.dg/20231103-2.f90 b/gcc/testsuite/gfortran.dg/20231103-2.f90
new file mode 100644
index 00000000000..c510505d5ad
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/20231103-2.f90
@@ -0,0 +1,22 @@ 
+! { dg-do compile }
+! { dg-options "-Ofast" }
+subroutine shr_map_checkFldStrshr_map_mapSet_dest(ndst,max0,eps,sum0,maxval0,min0,nidnjd,renorm)
+  allocatable  sum(:)
+  logical renorm
+  allocate(sum(ndst))
+  do n=1,ndst 
+    if (sum0 > eps) then
+      rmax = max0
+    endif
+  enddo
+  if (renorm) then
+    rmin = maxval0
+    rmax = minval(sum)
+    do n=1,nidnjd
+      if (sum0 > eps) then
+        rmin = min0
+      endif
+    enddo
+    write(*,*) rmin,rmax
+  endif
+end