]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/80494 (ICE in wide_int_to_tree)
authorRichard Biener <rguenther@suse.de>
Mon, 24 Apr 2017 11:57:53 +0000 (11:57 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 24 Apr 2017 11:57:53 +0000 (11:57 +0000)
2017-04-24  Richard Biener  <rguenther@suse.de>

PR tree-optimization/80494
* tree-scalar-evolution.c (analyze_scalar_evolution_1): Bail
out for complex types.

* gfortran.dg/pr80494.f90: New testcase.

From-SVN: r247095

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr80494.f90 [new file with mode: 0644]
gcc/tree-scalar-evolution.c

index 86ec5c1a3f4603c447c0b4b2a07910745fd79125..1a6f0006f935b4c9590f418faaa3ea3e696c5b4f 100644 (file)
@@ -1,3 +1,9 @@
+2017-04-24  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/80494
+       * tree-scalar-evolution.c (analyze_scalar_evolution_1): Bail
+       out for complex types.
+
 2017-04-24  Richard Biener  <rguenther@suse.de>
 
        * tree-ssa-sccvn.h (run_scc_vn): Adjust prototype.
index 08ad07d3cd76d08cd27b58c4e016a3e8036ce481..740de777e1cb8c4131cd78d28e2bf2b35424f1e1 100644 (file)
@@ -1,3 +1,8 @@
+2017-04-24  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/80494
+       * gfortran.dg/pr80494.f90: New testcase.
+
 2017-04-24  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/79725
diff --git a/gcc/testsuite/gfortran.dg/pr80494.f90 b/gcc/testsuite/gfortran.dg/pr80494.f90
new file mode 100644 (file)
index 0000000..c619c0a
--- /dev/null
@@ -0,0 +1,32 @@
+! { dg-do compile }
+! { dg-options "-std=gnu -O2" }
+
+subroutine CalcCgr(C,rmax,ordgr_max)
+  integer, intent(in) :: rmax,ordgr_max
+  double complex :: Zadj(2,2), Zadj2(2,2)
+  double complex, intent(out) :: C(0:rmax,0:rmax,0:rmax)
+  double complex, allocatable :: Cexpgr(:,:,:,:)
+  double complex :: Caux
+  integer :: rmaxB,rmaxExp,r,n0,n1,n2,k,l,i,j,m,n,nn
+
+  rmaxB = 2*rmax
+  rmaxExp = rmaxB
+  allocate(Cexpgr(0:rmaxExp/2,0:rmaxExp,0:rmaxExp,0:ordgr_max))
+   
+  rloop: do r=0,rmaxExp/2
+    do n0=r,1,-1
+      do nn=r-n0,0,-1
+        do i=1,2
+          Caux = Caux - Zadj(i,l)
+        end do
+        Cexpgr(n0,0,0,0) = Caux/(2*(nn+1))
+      end do
+    end do
+    do n1=0,r
+      n2 = r-n1
+      if (r.le.rmax) then
+        C(0,n1,n2) = Cexpgr(0,n1,n2,0)
+      end if
+    end do
+  end do rloop
+end subroutine CalcCgr
index cbd17e8644fe4e488c28e63231f4f93e523646d7..7327d4eed6b4ab8fd5639cbaa06ef7cd646e5e71 100644 (file)
@@ -2049,7 +2049,9 @@ analyze_scalar_evolution_1 (struct loop *loop, tree var, tree res)
   basic_block bb;
   struct loop *def_loop;
 
-  if (loop == NULL || TREE_CODE (type) == VECTOR_TYPE)
+  if (loop == NULL
+      || TREE_CODE (type) == VECTOR_TYPE
+      || TREE_CODE (type) == COMPLEX_TYPE)
     return chrec_dont_know;
 
   if (TREE_CODE (var) != SSA_NAME)