aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorTobias Burnus <burnus@net-b.de>2012-03-08 20:36:43 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2012-03-08 20:36:43 +0100
commit232d1950fd1cc440b0d7673246614c360744984e (patch)
tree9443afab81e4ef90ee741cf6182f4589a68beb06 /gcc/fortran
parenta3299120f38a99b7e488ef54c1ef6fb5572d7f1d (diff)
downloadgcc-232d1950fd1cc440b0d7673246614c360744984e.zip
gcc-232d1950fd1cc440b0d7673246614c360744984e.tar.gz
gcc-232d1950fd1cc440b0d7673246614c360744984e.tar.bz2
re PR fortran/52469 (-fwhole-file bug: Wrong backend_decl for result of PPC function)
2012-03-08 Tobias Burnus <burnus@net-b.de> PR fortran/52469 * trans-types.c (gfc_get_function_type): Handle backend_decl of a procedure pointer. 2012-03-08 Tobias Burnus <burnus@net-b.de> PR fortran/52469 * gfortran.dg/proc_ptr_34.f90 From-SVN: r185109
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-types.c6
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 3d10d9f..d3ef58d 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2012-03-08 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/52469
+ * trans-types.c (gfc_get_function_type): Handle backend_decl
+ of a procedure pointer.
+
2012-03-06 Steven Bosscher <steven@gcc.gnu.org>
* f95-lang.c (yyerror, yylex): Remove.
diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c
index 6ff1d33..0f2912d 100644
--- a/gcc/fortran/trans-types.c
+++ b/gcc/fortran/trans-types.c
@@ -2678,7 +2678,11 @@ gfc_get_function_type (gfc_symbol * sym)
|| sym->attr.flavor == FL_PROGRAM);
if (sym->backend_decl)
- return TREE_TYPE (sym->backend_decl);
+ {
+ if (sym->attr.proc_pointer)
+ return TREE_TYPE (TREE_TYPE (sym->backend_decl));
+ return TREE_TYPE (sym->backend_decl);
+ }
alternate_return = 0;
typelist = NULL;