aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDaniel Franke <franke.daniel@gmail.com>2009-12-10 16:03:40 -0500
committerDaniel Franke <dfranke@gcc.gnu.org>2009-12-10 16:03:40 -0500
commitb94e5176d7e1ed624db4678244e421248421392d (patch)
tree5722d6834512dd86afc9564c3c0eb19b260aa731 /gcc
parent47cb0d7da16c57888fdc04437530d86f33ee3c1b (diff)
downloadgcc-b94e5176d7e1ed624db4678244e421248421392d.zip
gcc-b94e5176d7e1ed624db4678244e421248421392d.tar.gz
gcc-b94e5176d7e1ed624db4678244e421248421392d.tar.bz2
re PR fortran/41369 (Empty derived-type wrongly rejected as function return type)
2009-12-10 Daniel Franke <franke.daniel@gmail.com> PR fortran/41369 * parse.c (match_deferred_characteristics): Removed check for empty types in function return values. 2009-12-10 Daniel Franke <franke.daniel@gmail.com> PR fortran/41369 * gfortran.dg/func_derived_5.f90: New. From-SVN: r155141
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/parse.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/func_derived_5.f9014
4 files changed, 26 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 7280dd7..b1bec37 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,11 @@
2009-12-10 Daniel Franke <franke.daniel@gmail.com>
+ PR fortran/41369
+ * parse.c (match_deferred_characteristics): Removed check for empty
+ types in function return values.
+
+2009-12-10 Daniel Franke <franke.daniel@gmail.com>
+
PR fortran/34402
* expr.c (check_alloc_comp_init): New.
(check_init_expr): Verify that allocatable components
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c
index c5d3548..98d684f 100644
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -2340,7 +2340,7 @@ match_deferred_characteristics (gfc_typespec * ts)
{
ts->kind = 0;
- if (!ts->u.derived || !ts->u.derived->components)
+ if (!ts->u.derived)
m = MATCH_ERROR;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fd0628f..2b1220b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-10 Daniel Franke <franke.daniel@gmail.com>
+
+ PR fortran/41369
+ * gfortran.dg/func_derived_5.f90: New.
+
2009-12-10 Jan Hubicka <jh@suse.cz>
PR middle-end/42110
diff --git a/gcc/testsuite/gfortran.dg/func_derived_5.f90 b/gcc/testsuite/gfortran.dg/func_derived_5.f90
new file mode 100644
index 0000000..afe5ec0
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/func_derived_5.f90
@@ -0,0 +1,14 @@
+! { dg-do "compile" }
+! PR fortran/41369 - rejected empty type in function return values
+
+module m
+ type t
+ end type t
+end module
+
+type(t) function foo()
+ use m
+ foo = t()
+end function foo
+
+! { dg-final { cleanup-modules "m" } }