From 8be94ca91d060ade8a27d480b533b59bda69f43d Mon Sep 17 00:00:00 2001
From: burnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Sun, 17 Dec 2006 18:00:46 +0000
Subject: [PATCH] 2006-12-17  Tobias Burnus  <burnus@net-b.de>

    * intrinsics/associated.c: Check for associated(NULL,NULL).

2006-12-17  Tobias Burnus  <burnus@net-b.de>

    * gfortran.dg/associated_2.f90: Add test for associated(NULL,NULL).



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119989 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/testsuite/ChangeLog                    | 4 ++++
 gcc/testsuite/gfortran.dg/associated_2.f90 | 2 ++
 libgfortran/ChangeLog                      | 4 ++++
 libgfortran/intrinsics/associated.c        | 2 ++
 4 files changed, 12 insertions(+)

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6d8074e2fc8a..39abc504ee74 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2006-12-17  Tobias Burnus  <burnus@net-b.de>
+
+	* gfortran.dg/associated_2.f90: Add test for associated(NULL,NULL).
+
 2006-12-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
 
 	PR middle-end/7651
diff --git a/gcc/testsuite/gfortran.dg/associated_2.f90 b/gcc/testsuite/gfortran.dg/associated_2.f90
index 5b8b689d1f4b..1ff8006de009 100644
--- a/gcc/testsuite/gfortran.dg/associated_2.f90
+++ b/gcc/testsuite/gfortran.dg/associated_2.f90
@@ -17,6 +17,8 @@ contains
 ! the target argument is not present (case (i))
     if (.not. associated (b)) call abort ()
     deallocate (a)
+    nullify(a)
+    if(associated(a,a)) call abort()
     allocate (a(2,1,2))
     b => a
     if (.not.associated (b)) call abort ()
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 0844d1a6df7c..ff7adbe2da65 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,7 @@
+2006-12-17  Tobias Burnus  <burnus@net-b.de>
+
+	* intrinsics/associated.c: Check for associated(NULL,NULL).
+
 2006-12-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
 	PR libfortran/30145
diff --git a/libgfortran/intrinsics/associated.c b/libgfortran/intrinsics/associated.c
index 1a05f20072bc..d5ef556b80cf 100644
--- a/libgfortran/intrinsics/associated.c
+++ b/libgfortran/intrinsics/associated.c
@@ -39,6 +39,8 @@ associated (const gfc_array_void *pointer, const gfc_array_void *target)
 {
   int n, rank;
 
+  if (GFC_DESCRIPTOR_DATA (pointer) == NULL)
+    return 0;
   if (GFC_DESCRIPTOR_DATA (pointer) != GFC_DESCRIPTOR_DATA (target))
     return 0;
   if (GFC_DESCRIPTOR_DTYPE (pointer) != GFC_DESCRIPTOR_DTYPE (target))
-- 
GitLab