summaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authormikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>2013-03-03 17:52:02 +0000
committermikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>2013-03-03 17:52:02 +0000
commitef11013858b41453c4953ca8d4c25e3b1668e536 (patch)
tree542b966e4ddfa5b7b5c9ccf60d29ed08c14b363b /gcc/testsuite
parentdb38a06127c55b1ec81326208a9b305df73c17e6 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/array_constructor_42.f9022
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