OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [gfortran.dg/] [elemental_optional_args_1.f90] - Diff between revs 149 and 154

Only display areas with differences | Details | Blame | View Log

Rev 149 Rev 154
! { dg-do compile }
! { dg-do compile }
! { dg-options "-pedantic" }
! { dg-options "-pedantic" }
! Check the fix for PR20893, in which actual arguments could violate:
! Check the fix for PR20893, in which actual arguments could violate:
! "(5) If it is an array, it shall not be supplied as an actual argument to
! "(5) If it is an array, it shall not be supplied as an actual argument to
! an elemental procedure unless an array of the same rank is supplied as an
! an elemental procedure unless an array of the same rank is supplied as an
! actual argument corresponding to a nonoptional dummy argument of that
! actual argument corresponding to a nonoptional dummy argument of that
! elemental procedure." (12.4.1.5)
! elemental procedure." (12.4.1.5)
!
!
! Contributed by Joost VandeVondele 
! Contributed by Joost VandeVondele 
!
!
  CALL T1(1,2)
  CALL T1(1,2)
CONTAINS
CONTAINS
  SUBROUTINE T1(A1,A2,A3)
  SUBROUTINE T1(A1,A2,A3)
    INTEGER           :: A1,A2, A4(2)
    INTEGER           :: A1,A2, A4(2)
    INTEGER, OPTIONAL :: A3(2)
    INTEGER, OPTIONAL :: A3(2)
    interface
    interface
      elemental function efoo (B1,B2,B3) result(bar)
      elemental function efoo (B1,B2,B3) result(bar)
        INTEGER, intent(in)           :: B1, B2
        INTEGER, intent(in)           :: B1, B2
        integer           :: bar
        integer           :: bar
        INTEGER, OPTIONAL, intent(in) :: B3
        INTEGER, OPTIONAL, intent(in) :: B3
      end function efoo
      end function efoo
    end interface
    end interface
! check an intrinsic function
! check an intrinsic function
    write(6,*) MAX(A1,A2,A3) ! { dg-warning "array and OPTIONAL" }
    write(6,*) MAX(A1,A2,A3) ! { dg-warning "array and OPTIONAL" }
    write(6,*) MAX(A1,A3,A2)
    write(6,*) MAX(A1,A3,A2)
    write(6,*) MAX(A1,A4,A3)
    write(6,*) MAX(A1,A4,A3)
! check an internal elemental function
! check an internal elemental function
    write(6,*) foo(A1,A2,A3) ! { dg-warning "array and OPTIONAL" }
    write(6,*) foo(A1,A2,A3) ! { dg-warning "array and OPTIONAL" }
    write(6,*) foo(A1,A3,A2)
    write(6,*) foo(A1,A3,A2)
    write(6,*) foo(A1,A4,A3)
    write(6,*) foo(A1,A4,A3)
! check an external elemental function
! check an external elemental function
    write(6,*) efoo(A1,A2,A3) ! { dg-warning "array and OPTIONAL" }
    write(6,*) efoo(A1,A2,A3) ! { dg-warning "array and OPTIONAL" }
    write(6,*) efoo(A1,A3,A2)
    write(6,*) efoo(A1,A3,A2)
    write(6,*) efoo(A1,A4,A3)
    write(6,*) efoo(A1,A4,A3)
! check an elemental subroutine
! check an elemental subroutine
    call foobar (A1,A2,A3) ! { dg-warning "array and OPTIONAL" }
    call foobar (A1,A2,A3) ! { dg-warning "array and OPTIONAL" }
    call foobar (A1,A2,A4)
    call foobar (A1,A2,A4)
    call foobar (A1,A4,A4)
    call foobar (A1,A4,A4)
  END SUBROUTINE
  END SUBROUTINE
  elemental function foo (B1,B2,B3) result(bar)
  elemental function foo (B1,B2,B3) result(bar)
    INTEGER, intent(in)           :: B1, B2
    INTEGER, intent(in)           :: B1, B2
    integer           :: bar
    integer           :: bar
    INTEGER, OPTIONAL, intent(in) :: B3
    INTEGER, OPTIONAL, intent(in) :: B3
    bar = 1
    bar = 1
  end function foo
  end function foo
  elemental subroutine foobar (B1,B2,B3)
  elemental subroutine foobar (B1,B2,B3)
    INTEGER, intent(OUT)           :: B1
    INTEGER, intent(OUT)           :: B1
    INTEGER, optional, intent(in)  :: B2, B3
    INTEGER, optional, intent(in)  :: B2, B3
    B1 = 1
    B1 = 1
  end subroutine foobar
  end subroutine foobar
END
END
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.