diff options
author | Tobias Burnus <burnus@gcc.gnu.org> | 2006-12-19 20:41:35 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2006-12-19 20:41:35 +0100 |
commit | 23572654a20c852cd9c33fd0cfd1d67b3d57f97d (patch) | |
tree | 5264f0f15c96d50849b7ca4a42e6745b545a0fec | |
parent | 41da2805f38799eb92a3bf178a5e8dac6815066f (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/trans-intrinsic.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/associated_1.f90 | 3 |
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 () |