OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [gfortran.dg/] [dependent_decls_1.f90] - Diff between revs 154 and 816

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 154 Rev 816
! { dg-do run }
! { dg-do run }
! Tests the fix for pr28660 in which the order of dependent declarations
! Tests the fix for pr28660 in which the order of dependent declarations
! would get scrambled in the compiled code.
! would get scrambled in the compiled code.
!
!
! Contributed by Erik Edelmann  
! Contributed by Erik Edelmann  
!
!
program bar
program bar
    implicit none
    implicit none
    real :: x(10)
    real :: x(10)
    call foo1 (x)
    call foo1 (x)
    call foo2 (x)
    call foo2 (x)
    call foo3 (x)
    call foo3 (x)
contains
contains
    subroutine foo1 (xmin)
    subroutine foo1 (xmin)
        real, intent(inout) :: xmin(:)
        real, intent(inout) :: xmin(:)
        real :: x(size(xmin)+1)           ! The declaration for r would be added
        real :: x(size(xmin)+1)           ! The declaration for r would be added
        real :: r(size(x)-2)              ! to the function before that of x
        real :: r(size(x)-2)              ! to the function before that of x
        xmin = r
        xmin = r
        if (size(r) .ne. 9) call abort ()
        if (size(r) .ne. 9) call abort ()
        if (size(x) .ne. 11) call abort ()
        if (size(x) .ne. 11) call abort ()
    end subroutine foo1
    end subroutine foo1
    subroutine foo2 (xmin)                ! This version was OK because of the
    subroutine foo2 (xmin)                ! This version was OK because of the
        real, intent(inout) :: xmin(:)    ! renaming of r which pushed it up
        real, intent(inout) :: xmin(:)    ! renaming of r which pushed it up
        real :: x(size(xmin)+3)           ! the symtree.
        real :: x(size(xmin)+3)           ! the symtree.
        real :: zr(size(x)-6)
        real :: zr(size(x)-6)
        xmin = zr
        xmin = zr
        if (size(zr) .ne. 7) call abort ()
        if (size(zr) .ne. 7) call abort ()
        if (size(x) .ne. 13) call abort ()
        if (size(x) .ne. 13) call abort ()
    end subroutine foo2
    end subroutine foo2
    subroutine foo3 (xmin)
    subroutine foo3 (xmin)
        real, intent(inout) :: xmin(:)
        real, intent(inout) :: xmin(:)
        character(size(x)+2) :: y         ! host associated x
        character(size(x)+2) :: y         ! host associated x
        character(len(y)+3) :: z          ! This did not work for any combination
        character(len(y)+3) :: z          ! This did not work for any combination
        real :: r(len(z)-10)              ! of names.
        real :: r(len(z)-10)              ! of names.
        xmin = r
        xmin = r
        if (size(r) .ne. 5) call abort ()
        if (size(r) .ne. 5) call abort ()
        if (len(z) .ne. 15) call abort ()
        if (len(z) .ne. 15) call abort ()
    end subroutine foo3
    end subroutine foo3
end program bar
end program bar
 
 

powered by: WebSVN 2.1.0

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