From 64a96f5bc3736c2d423823d1ca135eef3760cf6b Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Mon, 28 Jan 2008 18:25:55 +0100 Subject: [PATCH] [multiple changes] 2008-01-28 Tobias Burnus PR libfortran/34980 * simplify.c (gfc_simplify_shape): Simplify rank zero arrays. 2008-01-28 Thomas Koenig PR libfortran/34980 * gfortran.dg/shape_3.f90: New test. From-SVN: r131913 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/simplify.c | 6 +++++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/shape_3.f90 | 11 +++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/shape_3.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 282b06a4de06..0923a77720ab 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2008-01-28 Tobias Burnus + + PR libfortran/34980 + * simplify.c (gfc_simplify_shape): Simplify rank zero arrays. + 2008-01-27 Jerry DeLisle PR fortran/34990 diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 12be1e082222..1b5b23e2c0ff 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -3714,7 +3714,11 @@ gfc_simplify_shape (gfc_expr *source) int n; try t; - if (source->rank == 0 || source->expr_type != EXPR_VARIABLE) + if (source->rank == 0) + return gfc_start_constructor (BT_INTEGER, gfc_default_integer_kind, + &source->where); + + if (source->expr_type != EXPR_VARIABLE) return NULL; result = gfc_start_constructor (BT_INTEGER, gfc_default_integer_kind, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b2a322fcbcbb..c13e90689884 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-01-28 Thomas Koenig + + PR libfortran/34980 + * gfortran.dg/shape_3.f90: New test. + 2008-01-28 Andreas Krebbel * gcc.target/s390/20020926-1.c: Remove -m31. diff --git a/gcc/testsuite/gfortran.dg/shape_3.f90 b/gcc/testsuite/gfortran.dg/shape_3.f90 new file mode 100644 index 000000000000..ea725a014e95 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/shape_3.f90 @@ -0,0 +1,11 @@ +! { dg-do run } +! PR 34980 - we got a segfault for calling shape +! with a scalar. +program main + integer :: n + n = 5 + open(10,status="scratch") + write (10,*) shape(n) + close(10,status="delete") +end + -- 2.47.2