re PR fortran/55476 (Bogus warning "Pointer might outlive the pointer target")
authorTobias Burnus <burnus@net-b.de>
Tue, 27 Nov 2012 22:20:44 +0000 (23:20 +0100)
committerTobias Burnus <burnus@gcc.gnu.org>
Tue, 27 Nov 2012 22:20:44 +0000 (23:20 +0100)
2012-11-27  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55476
        * expr.c (gfc_check_pointer_assign): Fix check
        pointer-might-outlive-target check for host_assoc.

2012-11-27  Tobias Burnus  <burnus@net-b.de>

        PR fortran/55476
        * gfortran.dg/warn_target_lifetime_3.f90: New.

From-SVN: r193872

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

index 2aa8d60e1f1e1a22fd34b6c053c1da9b97e18a40..bc8d0d8d445adfd23c763b5788a9b14b4458a9b4 100644 (file)
@@ -1,3 +1,9 @@
+2012-11-27  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/55476
+       * expr.c (gfc_check_pointer_assign): Fix check
+       pointer-might-outlive-target check for host_assoc.
+
 2012-11-26  Eric Botcazou  <ebotcazou@adacore.com>
 
        * trans-decl.c (gfc_finish_var_decl): Do not set DECL_RESTRICTED_P.
index 211f304164cfc0f63743c6336d8d4aae5b16da30..15570afb6ee33e273da01618b91f5eed24e61240 100644 (file)
@@ -3693,7 +3693,9 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue)
       warn = lvalue->symtree->n.sym->attr.dummy
             || lvalue->symtree->n.sym->attr.result
             || lvalue->symtree->n.sym->attr.function
-            || lvalue->symtree->n.sym->attr.host_assoc
+            || (lvalue->symtree->n.sym->attr.host_assoc
+                && lvalue->symtree->n.sym->ns
+                   != rvalue->symtree->n.sym->ns)
             || lvalue->symtree->n.sym->attr.use_assoc
             || lvalue->symtree->n.sym->attr.in_common;
 
index e065504c0f9bc481e5c206922ab0d427fd379402..2d8350b202628a303eb1f4ae4d68833cbee98bc9 100644 (file)
@@ -1,3 +1,8 @@
+2012-11-27  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/55476
+       * gfortran.dg/warn_target_lifetime_3.f90: New.
+
 2012-11-27  Vladimir Makarov  <vmakarov@redhat.com>
 
        PR rtl-optimization/55458
diff --git a/gcc/testsuite/gfortran.dg/warn_target_lifetime_3.f90 b/gcc/testsuite/gfortran.dg/warn_target_lifetime_3.f90
new file mode 100644 (file)
index 0000000..9113a88
--- /dev/null
@@ -0,0 +1,29 @@
+! { dg-do compile }
+! { dg-options "-Wall" }
+!
+! PR fortran/55476
+!
+! Contribued by  Janus Weil
+!
+subroutine test
+  integer, pointer :: p
+  integer, target :: t
+  p => t
+contains
+  subroutine sub()
+    if (p /= 0) return
+  end subroutine
+end subroutine
+
+module m
+  integer, pointer :: p2
+contains
+  subroutine test
+    integer, target :: t2
+    p2 => t2 ! { dg-warning "Pointer at .1. in pointer assignment might outlive the pointer target" }
+  contains
+    subroutine sub()
+      if (p2 /= 0) return
+    end subroutine
+  end subroutine
+end module m