aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2010-03-10 19:56:46 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2010-03-10 19:56:46 +0100
commitabf4d60b541534d42af4e36f723273737164ea38 (patch)
treeeff59b3d5f00938e870bb485b23af9f4d5a43ff0 /gcc
parent23f39b378852d679e5d24bbc204ec4ca8fefbd8c (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/fortran/symbol.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/c_assoc_3.f9013
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