diff options
author | Mikael Morin <mikael@gcc.gnu.org> | 2015-05-11 21:03:50 +0000 |
---|---|---|
committer | Mikael Morin <mikael@gcc.gnu.org> | 2015-05-11 21:03:50 +0000 |
commit | 21cd397ea325b16e0cf493552dd6e44d06082f45 (patch) | |
tree | 5a292cf0b9169109a599d885af6a97ff5385a944 /gcc | |
parent | caadc44d7b7dd110da85d5564749036cc4538cf8 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/simplify.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/bound_simplification_6.f90 | 27 |
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" } } |