re PR fortran/37580 (Accepts "pointer(:) => target" without lower bound)

2008-09-22  Tobias Burnus  <burnus@net-b.de>

        PR fortran/37580
        * expr.c (gfc_check_pointer_assign): Add checks for pointer
        remapping.

2008-09-22  Tobias Burnus  <burnus@net-b.de>

        PR fortran/37580
        * gfortran.dg/pointer_assign_5.f90: New test.
        * gfortran.dg/pointer_assign_6.f90: New test.

From-SVN: r140580
This commit is contained in:
Tobias Burnus 2008-09-23 10:00:01 +02:00 committed by Tobias Burnus
parent d7445152be
commit 54799fcd03
5 changed files with 56 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2008-09-23 Tobias Burnus <burnus@net-b.de>
PR fortran/37580
* expr.c (gfc_check_pointer_assign): Add checks for pointer
remapping.
2008-09-22 Jerry DeLisle <jvdelisle@gcc.gnu.org
PR fortran/37498

View file

@ -2955,6 +2955,32 @@ gfc_check_pointer_assign (gfc_expr *lvalue, gfc_expr *rvalue)
if (ref->type == REF_COMPONENT && ref->u.c.component->attr.pointer)
pointer = 1;
if (ref->type == REF_ARRAY && ref->next == NULL)
{
if (ref->u.ar.type == AR_FULL)
break;
if (ref->u.ar.type != AR_SECTION)
{
gfc_error ("Expected bounds specification for '%s' at %L",
lvalue->symtree->n.sym->name, &lvalue->where);
return FAILURE;
}
if (gfc_notify_std (GFC_STD_F2003,"Fortran 2003: Bounds "
"specification for '%s' in pointer assignment "
"at %L", lvalue->symtree->n.sym->name,
&lvalue->where) == FAILURE)
return FAILURE;
gfc_error ("Pointer bounds remapping at %L is not yet implemented "
"in gfortran", &lvalue->where);
/* TODO: See PR 29785. Add checks that all lbounds are specified and
either never or always the upper-bound; strides shall not be
present. */
return FAILURE;
}
}
if (check_intent_in && lvalue->symtree->n.sym->attr.intent == INTENT_IN)

View file

@ -1,3 +1,9 @@
2008-09-23 Tobias Burnus <burnus@net-b.de>
PR fortran/37580
* gfortran.dg/pointer_assign_5.f90: New test.
* gfortran.dg/pointer_assign_6.f90: New test.
2008-09-22 David Daney <ddaney@avtrex.com>
PR target/37593

View file

@ -0,0 +1,9 @@
! { dg-do compile }
! PR fortran/37580
!
program test
implicit none
real, pointer :: ptr1(:), ptr2(:)
ptr1(1) => ptr2 ! { dg-error "Expected bounds specification" }
ptr1(1:) => ptr2 ! { dg-error "not yet implemented in gfortran" }
end program test

View file

@ -0,0 +1,9 @@
! { dg-do compile }
! { dg-options "-std=f95" }
! PR fortran/37580
!
program test
implicit none
real, pointer :: ptr1(:), ptr2(:)
ptr1(1:) => ptr2 ! { dg-error "Fortran 2003: Bounds specification" }
end program test