aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Burnus <burnus@gcc.gnu.org>2006-12-19 20:41:35 +0100
committerTobias Burnus <burnus@gcc.gnu.org>2006-12-19 20:41:35 +0100
commit23572654a20c852cd9c33fd0cfd1d67b3d57f97d (patch)
tree5264f0f15c96d50849b7ca4a42e6745b545a0fec
parent41da2805f38799eb92a3bf178a5e8dac6815066f (diff)
downloadgcc-23572654a20c852cd9c33fd0cfd1d67b3d57f97d.zip
gcc-23572654a20c852cd9c33fd0cfd1d67b3d57f97d.tar.gz
gcc-23572654a20c852cd9c33fd0cfd1d67b3d57f97d.tar.bz2
re PR fortran/30238 (associated(null-pointer, null-pointer) returns .true.)
fortran/ 2006-12-19 Tobias Burnus <burnus@net-b.de> PR fortran/39238 * trans-intrinsic.c: Check for associated(NULL,NULL). testsuite/ 2006-12-19 Tobias Burnus <burnus@net-b.de> PR fortran/39238 * gfortran.dg/associated_1.f90: Add test for associated(NULL,NULL). From-SVN: r120056
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/trans-intrinsic.c4
-rw-r--r--gcc/testsuite/ChangeLog9
-rw-r--r--gcc/testsuite/gfortran.dg/associated_1.f903
4 files changed, 18 insertions, 3 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 89c1252..ee984b1 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2006-12-19 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/39238
+ * trans-intrinsic.c: Check for associated(NULL,NULL).
+
2006-12-19 Paul Thomas <pault@gcc.gnu.org>
PR fortran/30236
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c
index d284931..c10e9e5 100644
--- a/gcc/fortran/trans-intrinsic.c
+++ b/gcc/fortran/trans-intrinsic.c
@@ -3142,7 +3142,9 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr)
gfc_add_block_to_block (&se->pre, &arg1se.pre);
gfc_add_block_to_block (&se->post, &arg1se.post);
tmp = build2 (EQ_EXPR, boolean_type_node, arg1se.expr, arg2se.expr);
- se->expr = tmp;
+ tmp2 = build2 (NE_EXPR, boolean_type_node, arg1se.expr,
+ null_pointer_node);
+ se->expr = build2 (TRUTH_AND_EXPR, boolean_type_node, tmp, tmp2);
}
else
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a901726b..d287aa5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2006-12-19 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/39238
+ * gfortran.dg/associated_1.f90: Add test for associated(NULL,NULL).
+
2006-12-19 Paul Thomas <pault@gcc.gnu.org>
PR fortran/30236
@@ -41,8 +46,8 @@
2006-12-18 Bill Wendling <wendling@apple.com>
- * g++.old-deja/g++.mike/p11144.C: Renamed id to ID because
- id is an OjbC keyword.
+ * g++.old-deja/g++.mike/p11144.C: Renamed id to ID because
+ id is an OjbC keyword.
2006-12-18 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
diff --git a/gcc/testsuite/gfortran.dg/associated_1.f90 b/gcc/testsuite/gfortran.dg/associated_1.f90
index 64cf2b3..e214fe2 100644
--- a/gcc/testsuite/gfortran.dg/associated_1.f90
+++ b/gcc/testsuite/gfortran.dg/associated_1.f90
@@ -4,7 +4,10 @@
program test
real, pointer :: a, b
+ nullify(a,b)
+ if(associated(a,b).or.associated(a,a)) call abort()
allocate(a)
+ if(associated(b,a)) call abort()
if (.not.associated(x(a))) call abort ()
if (.not.associated(a, x(a))) call abort ()