1! { dg-do run } 2! { dg-options "-ffrontend-optimize -fdump-tree-original" } 3! PR 57071 - Check that 1**k is transformed into 1 4program main 5 implicit none 6 integer, parameter :: n = 3 7 integer(kind=8), dimension(-n:n) :: a 8 integer, dimension(-n:n) :: c, d 9 integer :: m 10 integer :: i, v 11 integer (kind=2) :: i2 12 13 v = 1 14 m = n 15 ! Test in scalar expressions 16 do i=-n,n 17 if (v /= 1**i) call abort 18 end do 19 20 ! Test in array constructors 21 a(-m:m) = [ (1**i, i= -m, m) ] 22 if (any(a .ne. v)) call abort 23 24 ! Test in array expressions 25 c = [ ( i, i = -n , n ) ] 26 d = 1**c 27 if (any(d .ne. v)) call abort 28 29 ! Test in different kind expressions 30 do i2=-n,n 31 if (v /= 1**i2) call abort 32 end do 33 34end program main 35! { dg-final { scan-tree-dump-times "_gfortran_pow_i4_i4" 0 "original" } } 36! { dg-final { cleanup-tree-dump "original" } } 37