[Patch, Fortran] PR 81770: [5/6/7 Regression] Bogus warning: Pointer in pointer assignment might outlive the pointer target
Janus Weil
janus@gcc.gnu.org
Sun Aug 27 20:05:00 GMT 2017
Hi all,
the attached patch fixes a bogus warning. The purpose of the warning
is to detect cases where a pointer lives longer than its target. If
the target itself is (1) a pointer or (2) a component of a DT pointer,
we do not know about the lifetime of the target at compile time and no
warning should be thrown. The existing check only handles case (1) and
my patch adds the handling of case (2).
Regtestes cleanly on x86_64-linux-gnu. Ok for trunk and the release branches?
Cheers,
Janus
2017-08-27 Janus Weil <janus@gcc.gnu.org>
PR fortran/81770
* expr.c (gfc_check_pointer_assign): Improve the check whether pointer
may outlive pointer target.
2017-08-27 Janus Weil <janus@gcc.gnu.org>
PR fortran/81770
* gfortran.dg/warn_target_lifetime_4.f90: New testcase.
-------------- next part --------------
Index: gcc/fortran/expr.c
===================================================================
--- gcc/fortran/expr.c (revision 251368)
+++ gcc/fortran/expr.c (working copy)
@@ -3806,7 +3806,8 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_ex
if (warn_target_lifetime
&& rvalue->expr_type == EXPR_VARIABLE
&& !rvalue->symtree->n.sym->attr.save
- && !attr.pointer && !rvalue->symtree->n.sym->attr.host_assoc
+ && !rvalue->symtree->n.sym->attr.pointer && !attr.pointer
+ && !rvalue->symtree->n.sym->attr.host_assoc
&& !rvalue->symtree->n.sym->attr.in_common
&& !rvalue->symtree->n.sym->attr.use_assoc
&& !rvalue->symtree->n.sym->attr.dummy)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: warn_target_lifetime_4.f90
Type: text/x-fortran
Size: 532 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20170827/e9c7a033/attachment.bin>
More information about the Fortran
mailing list