aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMikael Morin <mikael@gcc.gnu.org>2015-05-11 21:03:50 +0000
committerMikael Morin <mikael@gcc.gnu.org>2015-05-11 21:03:50 +0000
commit21cd397ea325b16e0cf493552dd6e44d06082f45 (patch)
tree5a292cf0b9169109a599d885af6a97ff5385a944 /gcc
parentcaadc44d7b7dd110da85d5564749036cc4538cf8 (diff)
downloadgcc-21cd397ea325b16e0cf493552dd6e44d06082f45.zip
gcc-21cd397ea325b16e0cf493552dd6e44d06082f45.tar.gz
gcc-21cd397ea325b16e0cf493552dd6e44d06082f45.tar.bz2
Fix fortran/66100 bound simplification ICE
PR fortran/66100 gcc/fortran/ * simplify.c (simplify_bound): Fix assert to accept subobject * arrays. gcc/testsuite/ * gfortran.dg/bound_simplification_6.f90: New. From-SVN: r223019
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/simplify.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/bound_simplification_6.f9027
4 files changed, 39 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 4b1c84f..fb68245 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2015-05-11 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/66100
+ * simplify.c (simplify_bound): Fix assert to accept subobject arrays.
+
2015-05-10 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/66041
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index f8d55fd..f49c6c0 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -3463,8 +3463,8 @@ simplify_bound (gfc_expr *array, gfc_expr *dim, gfc_expr *kind, int upper)
gcc_assert (!as
|| (as->type != AS_DEFERRED
&& array->expr_type == EXPR_VARIABLE
- && !array->symtree->n.sym->attr.allocatable
- && !array->symtree->n.sym->attr.pointer));
+ && !gfc_expr_attr (array).allocatable
+ && !gfc_expr_attr (array).pointer));
if (dim == NULL)
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4dd6efc..0c97ea2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-05-11 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/66100
+ * gfortran.dg/bound_simplification_6.f90: New.
+
2015-05-11 Steve Ellcey <sellcey@mips.com>
* gcc.target/mips/branch-1.c: Pass argument to bar().
diff --git a/gcc/testsuite/gfortran.dg/bound_simplification_6.f90 b/gcc/testsuite/gfortran.dg/bound_simplification_6.f90
new file mode 100644
index 0000000..fb17836
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/bound_simplification_6.f90
@@ -0,0 +1,27 @@
+! { dg-do compile }
+! { dg-additional-options "-fdump-tree-original" }
+!
+! PR fortran/66100
+! ICE on lbound simplification
+!
+! Original test case by Joost VandeVondele <Joost.VandeVondele@mat.ethz.ch>
+! Reduced by Thomas Koenig <tkoenig@gcc.gnu.org>
+!
+MODULE qs_integrate_potential_low
+ INTEGER, PARAMETER :: dp = 8
+ TYPE cell_type
+ REAL(KIND=8) :: h_inv(3,3)
+ END TYPE
+ TYPE(cell_type), POINTER :: cell
+ REAL(KIND=dp), DIMENSION(3) :: rp
+ CONTAINS
+ SUBROUTINE integrate_general_opt()
+ REAL(KIND=dp) :: gp(3)
+ INTEGER :: ng
+ if (any(lbound(cell%h_inv) /= 1)) call abort
+ if (any(ubound(cell%h_inv) /= 3)) call abort
+ END SUBROUTINE integrate_general_opt
+END MODULE qs_integrate_potential_low
+! { dg-final { scan-tree-dump-not "bound" "original" } }
+! { dg-final { scan-tree-dump-not "abort" "original" } }
+! { dg-final { cleanup-tree-dump "original" } }