aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2007-11-22 22:40:22 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2007-11-22 22:40:22 +0100
commitd4d757e6b5d3d66ea683f53d6f65e7718d4df6b4 (patch)
treeff380a1fff144a45ba2d38687700f27bd1bf96cb /gcc
parentcd9a21ca0b5ee9e1c4d5ae0140a0ac26564e5143 (diff)
downloadgcc-d4d757e6b5d3d66ea683f53d6f65e7718d4df6b4.zip
gcc-d4d757e6b5d3d66ea683f53d6f65e7718d4df6b4.tar.gz
gcc-d4d757e6b5d3d66ea683f53d6f65e7718d4df6b4.tar.bz2
primary.c (gfc_match_structure_constructor): Allow constructor for types without components.
2007-11-22 Tobias Burnus <burnus@net-b.de> * primary.c (gfc_match_structure_constructor): Allow constructor for types without components. 2007-11-22 Tobias Burnus <burnus@net-b.de> * gfortran.dg/derived_constructor_comps_3.f90: New. From-SVN: r130358
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/primary.c2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gfortran.dg/derived_constructor_comps_3.f9022
4 files changed, 32 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 43f6229..3939e0b 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,10 @@
2007-11-22 Tobias Burnus <burnus@net-b.de>
+ * primary.c (gfc_match_structure_constructor): Allow
+ constructor for types without components.
+
+2007-11-22 Tobias Burnus <burnus@net-b.de>
+
PR fortran/34079
* trans-expr.c (gfc_conv_function_call): Do not append
string length arguments when calling bind(c) procedures.
diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c
index 7e3d539..52977f7 100644
--- a/gcc/fortran/primary.c
+++ b/gcc/fortran/primary.c
@@ -1979,7 +1979,7 @@ gfc_match_structure_constructor (gfc_symbol *sym, gfc_expr **result)
if (gfc_match_char (')') != MATCH_YES)
goto syntax;
- if (comp->next != NULL)
+ if (comp && comp->next != NULL)
{
gfc_error ("Too few components in structure constructor at %C");
goto cleanup;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ccd81e9..4bde178 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2007-11-22 Tobias Burnus <burnus@net-b.de>
+
+ * gfortran.dg/derived_constructor_comps_3.f90: New.
+
2007-11-22 Jakub Jelinek <jakub@redhat.com>
PR c++/34094
diff --git a/gcc/testsuite/gfortran.dg/derived_constructor_comps_3.f90 b/gcc/testsuite/gfortran.dg/derived_constructor_comps_3.f90
new file mode 100644
index 0000000..688c38d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/derived_constructor_comps_3.f90
@@ -0,0 +1,22 @@
+! { dg-compile }
+!
+! gfortran was ICEing for the constructor of
+! componentfree types.
+!
+! Contributed by James Van Buskirk
+! http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/c8dd08d6da052499/
+!
+ module bug4_mod
+ implicit none
+ type bug4 ! no components
+ end type bug4
+end module bug4_mod
+
+program bug4_structure
+ use bug4_mod
+ implicit none
+ type(bug4) t
+ t = bug4()
+ write(*,*) t
+end program bug4_structure
+! { dg-final { cleanup-modules "bug4_mod" } }