1! PR fortran/79154
2! { dg-do compile }
3
4pure real function foo (a, b)		! { dg-warning "GCC does not currently support mixed size types for 'simd' functions" "" { target aarch64*-*-* } }
5!$omp declare simd(foo)			! { dg-bogus "may not appear in PURE" }
6  real, intent(in) :: a, b
7  foo = a + b
8end function foo
9pure function bar (a, b)
10  real, intent(in) :: a(8), b(8)
11  real :: bar(8)
12  integer :: i
13!$omp simd				! { dg-bogus "may not appear in PURE" }
14  do i = 1, 8
15    bar(i) = a(i) + b(i)
16  end do
17end function bar
18pure real function baz (a, b)
19!$omp declare target			! { dg-bogus "may not appear in PURE" }
20  real, intent(in) :: a, b
21  baz = a + b
22end function baz
23elemental real function fooe (a, b)	! { dg-warning "GCC does not currently support mixed size types for 'simd' functions" "" { target aarch64*-*-* } }
24!$omp declare simd(fooe)		! { dg-bogus "may not appear in PURE" }
25  real, intent(in) :: a, b
26  fooe = a + b
27end function fooe
28elemental real function baze (a, b)
29!$omp declare target			! { dg-bogus "may not appear in PURE" }
30  real, intent(in) :: a, b
31  baze = a + b
32end function baze
33elemental impure real function bazei (a, b)
34!$omp declare target			! { dg-bogus "may not appear in PURE" }
35  real, intent(in) :: a, b
36  baze = a + b
37end function bazei
38