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

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc2/] [gcc/] [testsuite/] [gfortran.dg/] [character_array_constructor_1.f90] - Diff between revs 302 and 384

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

Rev 302 Rev 384
! { dg-do run }
! { dg-do run }
! Tests the fix for PR27113, in which character structure
! Tests the fix for PR27113, in which character structure
! components would produce the TODO compilation error "complex
! components would produce the TODO compilation error "complex
! character array constructors".
! character array constructors".
!
!
! Test based on part of tonto-2.2;
! Test based on part of tonto-2.2;
! Contributed by Paul Thomas  
! Contributed by Paul Thomas  
!
!
  type BASIS_TYPE
  type BASIS_TYPE
    character(len=8) :: label
    character(len=8) :: label
  end type
  end type
  type(BASIS_TYPE), dimension(:), pointer :: ptr
  type(BASIS_TYPE), dimension(:), pointer :: ptr
  character(8), dimension(2) :: carray
  character(8), dimension(2) :: carray
  allocate (ptr(2))
  allocate (ptr(2))
  ptr(1)%label = "Label 1"
  ptr(1)%label = "Label 1"
  ptr(2)%label = "Label 2"
  ptr(2)%label = "Label 2"
! This is the original bug
! This is the original bug
  call read_library_data_((/ptr%label/))
  call read_library_data_((/ptr%label/))
  carray(1) = "Label 3"
  carray(1) = "Label 3"
  carray(2) = "Label 4"
  carray(2) = "Label 4"
! Mix a character array with the character component of a derived type pointer array.
! Mix a character array with the character component of a derived type pointer array.
  call read_library_data_((/carray, ptr%label/))
  call read_library_data_((/carray, ptr%label/))
! Finally, add a constant (character(8)).
! Finally, add a constant (character(8)).
  call read_library_data_((/carray, ptr%label, "Label 5 "/))
  call read_library_data_((/carray, ptr%label, "Label 5 "/))
contains
contains
  subroutine read_library_data_ (chr)
  subroutine read_library_data_ (chr)
    character(*), dimension(:) :: chr
    character(*), dimension(:) :: chr
    character(len = len(chr)) :: tmp
    character(len = len(chr)) :: tmp
    if (size(chr,1) == 2) then
    if (size(chr,1) == 2) then
      if (any (chr .ne. (/"Label 1", "Label 2"/))) call abort ()
      if (any (chr .ne. (/"Label 1", "Label 2"/))) call abort ()
    elseif (size(chr,1) == 4) then
    elseif (size(chr,1) == 4) then
      if (any (chr .ne. (/"Label 3", "Label 4","Label 1", "Label 2"/))) call abort ()
      if (any (chr .ne. (/"Label 3", "Label 4","Label 1", "Label 2"/))) call abort ()
    elseif (size(chr,1) == 5) then
    elseif (size(chr,1) == 5) then
      if (any (chr .ne. (/"Label 3", "Label 4","Label 1", "Label 2", "Label 5"/))) &
      if (any (chr .ne. (/"Label 3", "Label 4","Label 1", "Label 2", "Label 5"/))) &
          call abort ()
          call abort ()
    end if
    end if
  end subroutine read_library_data_
  end subroutine read_library_data_
end
end
 
 

powered by: WebSVN 2.1.0

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