diff options
author | mikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-03-03 17:52:02 +0000 |
---|---|---|
committer | mikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-03-03 17:52:02 +0000 |
commit | ef11013858b41453c4953ca8d4c25e3b1668e536 (patch) | |
tree | 542b966e4ddfa5b7b5c9ccf60d29ed08c14b363b /gcc/testsuite | |
parent | db38a06127c55b1ec81326208a9b305df73c17e6 (diff) | |
download | gcc-ef11013858b41453c4953ca8d4c25e3b1668e536.tar.gz |
fortran/
PR fortran/54730
* array.c (gfc_match_array_constructor): Set a checkpoint before
matching a typespec. Drop it on success, restore it otherwise.
testsuite/
PR fortran/54730
* gfortran.dg/array_constructor_42.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@196416 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/array_constructor_42.f90 | 22 |
2 files changed, 27 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 112b6ae37ec..c34cd0f4a74 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-03-03 Mikael Morin <mikael@gcc.gnu.org> + + PR fortran/54730 + * gfortran.dg/array_constructor_42.f90: New test. + 2013-03-02 Paolo Carlini <paolo.carlini@oracle.com> PR c++/52688 diff --git a/gcc/testsuite/gfortran.dg/array_constructor_42.f90 b/gcc/testsuite/gfortran.dg/array_constructor_42.f90 new file mode 100644 index 00000000000..676247cdd5d --- /dev/null +++ b/gcc/testsuite/gfortran.dg/array_constructor_42.f90 @@ -0,0 +1,22 @@ +! { dg-do compile } +! +! PR fortran/54730 +! A symbol 'a' was created while attempting to parse a typespec in the array +! constructor. That (invalid) symbol was kept until translation stage +! where it was leading to an ICE. +! +! Original testcase from Paul Kapinos <kapinos@rz.rwth-aachen.de> +! + + subroutine s + implicit none + intrinsic :: real + real :: vec(1:2) + vec = (/ real(a = 1), 1. /) + end subroutine s + + program main + implicit none + intrinsic :: real + print *,(/ real(a = 1) /) + end |