diff options
author | Tobias Burnus <burnus@net-b.de> | 2010-03-10 19:56:46 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2010-03-10 19:56:46 +0100 |
commit | abf4d60b541534d42af4e36f723273737164ea38 (patch) | |
tree | eff59b3d5f00938e870bb485b23af9f4d5a43ff0 /gcc | |
parent | 23f39b378852d679e5d24bbc204ec4ca8fefbd8c (diff) | |
download | gcc-abf4d60b541534d42af4e36f723273737164ea38.zip gcc-abf4d60b541534d42af4e36f723273737164ea38.tar.gz gcc-abf4d60b541534d42af4e36f723273737164ea38.tar.bz2 |
2010-03-10 Tobias Burnus <burnus@net-b.de
PR fortran/43303
* symbol.c (get_iso_c_sym): Set sym->result.
2010-03-10 Tobias Burnus <burnus@net-b.de
PR fortran/43303
* gfortran.dg/c_assoc_3.f90: New test.
From-SVN: r157364
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/symbol.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/c_assoc_3.f90 | 13 |
4 files changed, 26 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 8165bb1..f9bde006 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,10 +1,15 @@ +2010-03-10 Tobias Burnus <burnus@net-b.de + + PR fortran/43303 + * symbol.c (get_iso_c_sym): Set sym->result. + 2010-03-08 Janus Weil <janus@gcc.gnu.org> PR fortran/43256 * resolve.c (resolve_compcall): Don't set 'value.function.name' here for TBPs, otherwise they will not be resolved properly. (resolve_function): Use 'value.function.esym' instead of - 'value.function.name' to check if we're dealing with a TBP. + 'value.function.name' to check if we're dealing with a TBP. (check_class_members): Set correct type of passed object for all TBPs, not only generic ones, except if the type is abstract. diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index e363c5e..0cbbacc 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -4502,6 +4502,8 @@ get_iso_c_sym (gfc_symbol *old_sym, char *new_name, new_symtree->n.sym->module = gfc_get_string (old_sym->module); new_symtree->n.sym->from_intmod = old_sym->from_intmod; new_symtree->n.sym->intmod_sym_id = old_sym->intmod_sym_id; + if (old_sym->attr.function) + new_symtree->n.sym->result = new_symtree->n.sym; /* Build the formal arg list. */ build_formal_args (new_symtree->n.sym, old_sym, add_optional_arg); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0b8ec91..9e4df9a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-03-10 Tobias Burnus <burnus@net-b.de + + PR fortran/43303 + * gfortran.dg/c_assoc_3.f90: New test. + 2010-03-10 Jakub Jelinek <jakub@redhat.com> PR debug/36728 diff --git a/gcc/testsuite/gfortran.dg/c_assoc_3.f90 b/gcc/testsuite/gfortran.dg/c_assoc_3.f90 new file mode 100644 index 0000000..0aceb42 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/c_assoc_3.f90 @@ -0,0 +1,13 @@ +! { dg-do compile } +! +! PR fortran/43303 +! +! Contributed by Dennis Wassel +! +PROGRAM c_assoc + use iso_c_binding + type(c_ptr) :: x + x = c_null_ptr + print *, C_ASSOCIATED(x) ! <<< was ICEing here + if (C_ASSOCIATED(x)) call abort () +END PROGRAM c_assoc |