]> gcc.gnu.org Git - gcc.git/commit - gcc/fortran/decl.c
[multiple changes]
authorJakub Jelinek <jakub@gcc.gnu.org>
Fri, 29 Apr 2005 15:31:39 +0000 (17:31 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 29 Apr 2005 15:31:39 +0000 (17:31 +0200)
commitd198b59ab12557edbafc2bba595f855caccfc6ec
treed2859b3b62d8719bdc1d462cb30cdea8235bea87
parentbe12e697e42187347dffea36e37db82cf04d37a5
[multiple changes]

2005-04-29  Jakub Jelinek  <jakub@redhat.com>

PR fortran/13082
PR fortran/18824
* trans-expr.c (gfc_conv_variable): Handle return values in functions
with alternate entry points.
* resolve.c (resolve_entries): Remove unnecessary string termination
after snprintf.  Set result of entry master.
If all entries have the same type, set entry master's type
to that common type, otherwise set mixed_entry_master attribute.
* trans-types.c (gfc_get_mixed_entry_union): New function.
(gfc_get_function_type): Use it for mixed_entry_master functions.
* gfortran.h (symbol_attribute): Add mixed_entry_master bit.
* decl.c (gfc_match_entry): Set entry->result properly for
function ENTRY.
* trans-decl.c (gfc_get_symbol_decl): For entry_master, skip over
__entry argument.
(build_entry_thunks): Handle return values in entry thunks.
Clear BT_CHARACTER's ts.cl->backend_decl, so that it is not
shared between multiple contexts.
(gfc_get_fake_result_decl): Use DECL_ARGUMENTS from
current_function_decl instead of sym->backend_decl.  Skip over
entry master's entry id argument.  For mixed_entry_master entries or
their results, return a COMPONENT_REF of the fake result.
(gfc_trans_deferred_vars): Don't warn about missing return value if
at least one entry point uses RESULT.
(gfc_generate_function_code): For entry master returning
CHARACTER, copy ts.cl->backend_decl to all entry result syms.
* trans-array.c (gfc_trans_dummy_array_bias): Don't consider return
values optional just because they are in entry master.

* gfortran.dg/entry_4.f90: New test.
* gfortran.fortran-torture/execute/entry_1.f90: New test.
* gfortran.fortran-torture/execute/entry_2.f90: New test.
* gfortran.fortran-torture/execute/entry_3.f90: New test.
* gfortran.fortran-torture/execute/entry_4.f90: New test.
* gfortran.fortran-torture/execute/entry_5.f90: New test.
* gfortran.fortran-torture/execute/entry_6.f90: New test.
* gfortran.fortran-torture/execute/entry_7.f90: New test.

2005-04-29  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>

* gfortran.fortran-torture/execute/entry_8.f90: New test.

From-SVN: r98993
18 files changed:
gcc/fortran/ChangeLog
gcc/fortran/decl.c
gcc/fortran/gfortran.h
gcc/fortran/resolve.c
gcc/fortran/trans-array.c
gcc/fortran/trans-decl.c
gcc/fortran/trans-expr.c
gcc/fortran/trans-types.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/entry_4.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.fortran-torture/execute/entry_1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.fortran-torture/execute/entry_2.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.fortran-torture/execute/entry_3.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.fortran-torture/execute/entry_4.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.fortran-torture/execute/entry_5.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.fortran-torture/execute/entry_6.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.fortran-torture/execute/entry_7.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.fortran-torture/execute/entry_8.f90 [new file with mode: 0644]
This page took 0.05033 seconds and 5 git commands to generate.