annotate gcc/testsuite/gfortran.dg/pr55330.f90 @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents 84e7813d76e9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ! PR rtl-optimization/55330
kono
parents:
diff changeset
2 ! { dg-do compile }
kono
parents:
diff changeset
3 ! { dg-options "-O -fPIC -fno-dse -fno-guess-branch-probability" }
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 module global
kono
parents:
diff changeset
6 public p, line
kono
parents:
diff changeset
7 interface p
kono
parents:
diff changeset
8 module procedure p
kono
parents:
diff changeset
9 end interface
kono
parents:
diff changeset
10 character(128) :: line = 'abcdefghijklmnopqrstuvwxyz'
kono
parents:
diff changeset
11 contains
kono
parents:
diff changeset
12 subroutine p()
kono
parents:
diff changeset
13 character(128) :: word
kono
parents:
diff changeset
14 word = line
kono
parents:
diff changeset
15 call redirect_((/word/))
kono
parents:
diff changeset
16 end subroutine
kono
parents:
diff changeset
17 subroutine redirect_ (ch)
kono
parents:
diff changeset
18 character(*) :: ch(:)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
19 if (ch(1) /= line) STOP 1
111
kono
parents:
diff changeset
20 end subroutine redirect_
kono
parents:
diff changeset
21 end module global
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 module my_module
kono
parents:
diff changeset
24 implicit none
kono
parents:
diff changeset
25 type point
kono
parents:
diff changeset
26 real :: x
kono
parents:
diff changeset
27 end type point
kono
parents:
diff changeset
28 type(point), pointer, public :: stdin => NULL()
kono
parents:
diff changeset
29 contains
kono
parents:
diff changeset
30 subroutine my_p(w)
kono
parents:
diff changeset
31 character(128) :: w
kono
parents:
diff changeset
32 call r(stdin,(/w/))
kono
parents:
diff changeset
33 end subroutine my_p
kono
parents:
diff changeset
34 subroutine r(ptr, io)
kono
parents:
diff changeset
35 use global
kono
parents:
diff changeset
36 type(point), pointer :: ptr
kono
parents:
diff changeset
37 character(128) :: io(:)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
38 if (associated (ptr)) STOP 2
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
39 if (io(1) .ne. line) STOP 3
111
kono
parents:
diff changeset
40 end subroutine r
kono
parents:
diff changeset
41 end module my_module
kono
parents:
diff changeset
42
kono
parents:
diff changeset
43 program main
kono
parents:
diff changeset
44 use global
kono
parents:
diff changeset
45 use my_module
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 integer :: i(6) = (/1,6,3,4,5,2/)
kono
parents:
diff changeset
48 character (6) :: a = 'hello ', t
kono
parents:
diff changeset
49 character(len=1) :: s(6) = (/'g','g','d','d','a','o'/)
kono
parents:
diff changeset
50 equivalence (s, t)
kono
parents:
diff changeset
51
kono
parents:
diff changeset
52 call option_stopwatch_s (a)
kono
parents:
diff changeset
53 call p ()
kono
parents:
diff changeset
54 call my_p (line)
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 s = s(i)
kono
parents:
diff changeset
57 call option_stopwatch_a ((/a,'hola! ', t/))
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59 contains
kono
parents:
diff changeset
60
kono
parents:
diff changeset
61 subroutine option_stopwatch_s(a)
kono
parents:
diff changeset
62 character (*), intent(in) :: a
kono
parents:
diff changeset
63 character (len=len(a)) :: b
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 b = 'hola! '
kono
parents:
diff changeset
66 call option_stopwatch_a((/a, b, 'goddag'/))
kono
parents:
diff changeset
67 end subroutine option_stopwatch_s
kono
parents:
diff changeset
68 subroutine option_stopwatch_a (a)
kono
parents:
diff changeset
69 character (*) :: a(:)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
70 if (any (a .ne. (/'hello ','hola! ','goddag'/))) STOP 4
111
kono
parents:
diff changeset
71 end subroutine option_stopwatch_a
kono
parents:
diff changeset
72
kono
parents:
diff changeset
73 end program main