aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2017-04-24 11:57:53 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2017-04-24 11:57:53 +0000
commitf30a1190ffff2c7fd5df923dbae1c16549cb8575 (patch)
treee1cde05c251163ddd6694c368d86b0bd3421e9b2 /gcc
parent6e2e575a032dfc4f6a3c88dfc71282bf38cd8890 (diff)
downloadgcc-f30a1190ffff2c7fd5df923dbae1c16549cb8575.zip
gcc-f30a1190ffff2c7fd5df923dbae1c16549cb8575.tar.gz
gcc-f30a1190ffff2c7fd5df923dbae1c16549cb8575.tar.bz2
re PR fortran/80494 (ICE in wide_int_to_tree)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr80494.f9032
-rw-r--r--gcc/tree-scalar-evolution.c4
4 files changed, 46 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 86ec5c1..1a6f000 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
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.
* tree-ssa-sccvn.c (print_scc): Print SCC size.
(extract_and_process_scc_for_name): Never fail but drop SCC to varying.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 08ad07d..740de77 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
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
* gcc.dg/tree-ssa/ssa-sink-15.c: New testcase.
diff --git a/gcc/testsuite/gfortran.dg/pr80494.f90 b/gcc/testsuite/gfortran.dg/pr80494.f90
new file mode 100644
index 0000000..c619c0a
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr80494.f90
@@ -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
diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c
index cbd17e8..7327d4e 100644
--- a/gcc/tree-scalar-evolution.c
+++ b/gcc/tree-scalar-evolution.c
@@ -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)