2011-07-17 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 17 Jul 2011 14:52:46 +0000 (14:52 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 17 Jul 2011 14:52:46 +0000 (14:52 +0000)
        PR fortran/49624
        * expr.c (gfc_check_pointer_assign): Fix checking for invalid
        pointer bounds.

2011-07-17  Tobias Burnus  <burnus@net-b.de>

        PR fortran/49624
        * gfortran.dg/pointer_remapping_7.f90: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176370 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 4321c2f..19339a6 100644 (file)
@@ -1,3 +1,9 @@
+2011-07-17  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/49624
+       * expr.c (gfc_check_pointer_assign): Fix checking for invalid
+       pointer bounds.
+
 2011-07-16  Tobias Burnus  <burnus@net-b.de>
        
        * expr.c (gfc_ref_this_image): New function.
index 3bf1e94..b8eb555 100644 (file)
@@ -3286,7 +3286,8 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue)
             upper bounds are present, we may do rank remapping.  */
          for (dim = 0; dim < ref->u.ar.dimen; ++dim)
            {
-             if (!ref->u.ar.start[dim])
+             if (!ref->u.ar.start[dim]
+                 || ref->u.ar.dimen_type[dim] != DIMEN_RANGE)
                {
                  gfc_error ("Lower bound has to be present at %L",
                             &lvalue->where);
index ffecc48..6abed53 100644 (file)
@@ -1,3 +1,8 @@
+2011-07-17  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/49624
+       * gfortran.dg/pointer_remapping_7.f90: New.
+
 2011-07-16  Jason Merrill  <jason@redhat.com>
 
        * lib/prune.exp (prune_gcc_output): Prune "In substitution" too.
diff --git a/gcc/testsuite/gfortran.dg/pointer_remapping_7.f90 b/gcc/testsuite/gfortran.dg/pointer_remapping_7.f90
new file mode 100644 (file)
index 0000000..39126ba
--- /dev/null
@@ -0,0 +1,8 @@
+! { dg-do compile }
+!
+! PR fortran/49624
+!
+  integer, target :: A(100)
+  integer,pointer :: P(:,:)
+  p(10,1:) => A  ! { dg-error "Lower bound has to be present" }
+  end