diff options
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/parse.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/func_result_5.f90 | 14 |
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 9e767557..9fff7ca 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2010-02-02 Tobias Burnus <burnus@net-b.de> + + PR fortran/42650 + * parse.c (decode_specification_statement): Use sym->result not sym. + 2010-02-01 Tobias Burnus <burnus@net-b.de> PR fortran/42922 diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c index 8f7ec29..9e8a123 100644 --- a/gcc/fortran/parse.c +++ b/gcc/fortran/parse.c @@ -111,7 +111,7 @@ decode_specification_statement (void) match ("import", gfc_match_import, ST_IMPORT); match ("use", gfc_match_use, ST_USE); - if (gfc_current_block ()->ts.type != BT_DERIVED) + if (gfc_current_block ()->result->ts.type != BT_DERIVED) goto end_of_block; match (NULL, gfc_match_st_function, ST_STATEMENT_FUNCTION); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c68fe11..d409f98 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-02-02 Tobias Burnus <burnus@net-b.de> + + PR fortran/42650 + * gfortran.dg/func_result_5.f90: New test. + 2010-02-01 Tobias Burnus <burnus@net-b.de> PR fortran/42922 diff --git a/gcc/testsuite/gfortran.dg/func_result_5.f90 b/gcc/testsuite/gfortran.dg/func_result_5.f90 new file mode 100644 index 0000000..5faff39 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/func_result_5.f90 @@ -0,0 +1,14 @@ +! { dg-do compile } +! +! PR fortran/42650 +! +! Result type was not working +! + +type(t) function func2() result(res) + type t + sequence + integer :: i = 5 + end type t + res%i = 2 +end function func2 |