aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-decl.c
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2012-11-26 12:16:31 +0100
committerJanus Weil <janus@gcc.gnu.org>2012-11-26 12:16:31 +0100
commit29be7510afa5761eb64db71df7ef8b2d2d57d8cf (patch)
tree9eb2f79f7f351d91466677ca64aaf9814e387c4d /gcc/fortran/trans-decl.c
parent3383b7fa4051d9b7cdc6dc11cfd3d821d3fd9cc7 (diff)
downloadgcc-29be7510afa5761eb64db71df7ef8b2d2d57d8cf.zip
gcc-29be7510afa5761eb64db71df7ef8b2d2d57d8cf.tar.gz
gcc-29be7510afa5761eb64db71df7ef8b2d2d57d8cf.tar.bz2
re PR fortran/54997 (-Wunused-function gives false warnings)
2012-11-26 Janus Weil <janus@gcc.gnu.org> PR fortran/54997 * decl.c (match_procedure_decl): Don't set 'referenced' attribute for PROCEDURE declarations. * parse.c (gfc_fixup_sibling_symbols,parse_contained): Don't set 'referenced' attribute for all contained procedures. * trans-decl.c (gfc_get_symbol_decl): Allow for unreferenced procedures. (build_function_decl): Set TREE_USED for referenced procedures. 2012-11-26 Janus Weil <janus@gcc.gnu.org> PR fortran/54997 * gfortran.dg/warn_unused_function_2.f90: New. From-SVN: r193811
Diffstat (limited to 'gcc/fortran/trans-decl.c')
-rw-r--r--gcc/fortran/trans-decl.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 6827298..9adcb8b 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -1195,10 +1195,11 @@ gfc_get_symbol_decl (gfc_symbol * sym)
bool intrinsic_array_parameter = false;
gcc_assert (sym->attr.referenced
- || sym->attr.use_assoc
- || sym->ns->proc_name->attr.if_source == IFSRC_IFBODY
- || (sym->module && sym->attr.if_source != IFSRC_DECL
- && sym->backend_decl));
+ || sym->attr.flavor == FL_PROCEDURE
+ || sym->attr.use_assoc
+ || sym->ns->proc_name->attr.if_source == IFSRC_IFBODY
+ || (sym->module && sym->attr.if_source != IFSRC_DECL
+ && sym->backend_decl));
if (sym->ns && sym->ns->proc_name && sym->ns->proc_name->attr.function)
byref = gfc_return_by_reference (sym->ns->proc_name);
@@ -1851,6 +1852,9 @@ build_function_decl (gfc_symbol * sym, bool global)
|| sym->attr.public_used))
TREE_PUBLIC (fndecl) = 1;
+ if (sym->attr.referenced || sym->attr.entry_master)
+ TREE_USED (fndecl) = 1;
+
attributes = add_attributes_to_decl (attr, NULL_TREE);
decl_attributes (&fndecl, attributes, 0);