summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/trim_optimize_4.f90
blob: 41c65b10bcde46a5de53ed39b6c22fc2576d1335 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
! { dg-do run }
! PR 47065 - make sure that trim optimization does not lead to
! wrong-code with aliasing.
! Test case provided by Tobias Burnus.
program main
  character(len=12) :: str
  str = '1234567890'
  call sub(trim(str), str)
  ! Should print '12345       '
  if (str /= '12345       ') call abort
  call two(trim(str))
  if (str /= '123         ') call abort
contains
  subroutine sub(a,b)
    character(len=*), intent(in) :: a
    character(len=*), intent(out) :: b
    b = ''
    b = a(1:5)
  end subroutine sub
  subroutine two(a)
    character(len=*), intent(in) :: a
    str = ''
    str(1:3) = a(1:3)
  end subroutine two
end program main