]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR fortran/81770 (Bogus warning: Pointer in pointer assignment might...
authorJanus Weil <janus@gcc.gnu.org>
Sat, 2 Sep 2017 19:31:44 +0000 (21:31 +0200)
committerJanus Weil <janus@gcc.gnu.org>
Sat, 2 Sep 2017 19:31:44 +0000 (21:31 +0200)
2017-09-02  Janus Weil  <janus@gcc.gnu.org>

Backport from trunk
PR fortran/81770
* expr.c (gfc_check_pointer_assign): Improve the check whether pointer
may outlive pointer target.

2017-09-02  Janus Weil  <janus@gcc.gnu.org>

Backport from trunk
PR fortran/81770
* gfortran.dg/warn_target_lifetime_3.f90: Fix a typo.
* gfortran.dg/warn_target_lifetime_4.f90: New testcase.

From-SVN: r251619

gcc/fortran/ChangeLog
gcc/fortran/expr.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/warn_target_lifetime_3.f90
gcc/testsuite/gfortran.dg/warn_target_lifetime_4.f90 [new file with mode: 0644]

index 990b5ca60c03c344c35a81bbe71df69ccd338c8d..0d1f7b66ae293da33064cbd66462645dde3be4c7 100644 (file)
@@ -1,3 +1,10 @@
+2017-09-02  Janus Weil  <janus@gcc.gnu.org>
+
+       Backport from trunk
+       PR fortran/81770
+       * expr.c (gfc_check_pointer_assign): Improve the check whether pointer
+       may outlive pointer target.
+
 2017-07-04  Release Manager
 
        * GCC 6.4.0 released.
index fd57b0b30bf1eb5555f5731814fed0a76723d648..b91f906e86ccfecfc007e29e4a49c501ca3a83d0 100644 (file)
@@ -3768,7 +3768,8 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue)
   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)
index 34486720e97a112d9e81407f978d66fe0668a766..1fd35cad5a08f5e88c627e1c90b5151bcd021b4c 100644 (file)
@@ -1,3 +1,10 @@
+2017-09-02  Janus Weil  <janus@gcc.gnu.org>
+
+       Backport from trunk
+       PR fortran/81770
+       * gfortran.dg/warn_target_lifetime_3.f90: Fix a typo.
+       * gfortran.dg/warn_target_lifetime_4.f90: New testcase.
+
 2017-08-30  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
        Back port from trunk
index 6c8ea5b945834126a88b46704b2f3729ad6c1869..0ef1e2d19c7db754c8fcf446c90632951133de0c 100644 (file)
@@ -3,7 +3,7 @@
 !
 ! PR fortran/55476
 !
-! Contribued by  Janus Weil
+! Contributed by Janus Weil
 !
 subroutine test
   integer, pointer :: p
diff --git a/gcc/testsuite/gfortran.dg/warn_target_lifetime_4.f90 b/gcc/testsuite/gfortran.dg/warn_target_lifetime_4.f90
new file mode 100644 (file)
index 0000000..d2972a9
--- /dev/null
@@ -0,0 +1,28 @@
+! { dg-do compile }
+! { dg-options "-Wtarget-lifetime" }
+!
+! PR fortran/81770: [5/6/7 Regression] Bogus warning: Pointer in pointer assignment might outlive the pointer target
+!
+! Contributed by Janus Weil <janus@gcc.gnu.org>
+
+module m
+
+   type t
+      integer, allocatable :: l
+   end type
+
+contains
+
+   subroutine sub(c_in, list)
+      type(t), target, intent(in)  :: c_in
+      integer, pointer, intent(out) :: list
+
+      type(t), pointer :: container
+
+      container => c_in
+
+      list => container%l
+
+   end subroutine
+
+end