diff options
| author | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-11-22 21:40:22 +0000 |
|---|---|---|
| committer | burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-11-22 21:40:22 +0000 |
| commit | e31b34b128d23e7743fc9599a69345da8c722abb (patch) | |
| tree | ff380a1fff144a45ba2d38687700f27bd1bf96cb | |
| parent | 2affdae9a3a3ba508172c27112fc695bf0ffe993 (diff) | |
| download | ppe42-gcc-e31b34b128d23e7743fc9599a69345da8c722abb.tar.gz ppe42-gcc-e31b34b128d23e7743fc9599a69345da8c722abb.zip | |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130358 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/fortran/primary.c | 2 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/testsuite/gfortran.dg/derived_constructor_comps_3.f90 | 22 |
4 files changed, 32 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 43f62294744..3939e0b58d7 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 7e3d539ba16..52977f7e84a 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 ccd81e904c9..4bde17874eb 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 00000000000..688c38d9192 --- /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" } } |

