145
|
1 ! { dg-do run }
|
|
2 ! { dg-additional-options "-fdump-tree-original" }
|
|
3 !
|
|
4 ! PR88579 - Test optimizations for bases that are powers of 2 or -2.
|
|
5 program p
|
|
6 implicit none
|
|
7 integer(4) :: i, u
|
|
8 integer(1) :: j, v
|
|
9 integer(2) :: k, w
|
|
10 integer(8) :: z
|
|
11 ! Test selected positive bases
|
|
12 u = 1
|
|
13 do i=1,5
|
|
14 u = u * 64_4
|
|
15 if (u /= 64_4 ** i) stop 1
|
|
16 end do
|
|
17 z = 1
|
|
18 do i=1,7
|
|
19 z = z * 256_8
|
|
20 if (z /= 256_8 ** i) stop 2
|
|
21 end do
|
|
22 z = 1
|
|
23 do i=1,3
|
|
24 z = z * 65536_8
|
|
25 if (z /= 65536_8 ** i) stop 3
|
|
26 end do
|
|
27 ! Test selected negative bases and integer kind combinations
|
|
28 u = 1
|
|
29 do i=1,7
|
|
30 u = u * (-2_1)
|
|
31 if (u /= (-2_1) ** i) stop 4
|
|
32 end do
|
|
33 v = 1
|
|
34 do j=1,7
|
|
35 v = v * (-2_1)
|
|
36 if (v /= (-2_1) ** j) stop 5
|
|
37 end do
|
|
38 v = 1
|
|
39 do k=1,7
|
|
40 v = v * (-2_1)
|
|
41 if (v /= (-2_1) ** k) stop 6
|
|
42 end do
|
|
43 w = 1
|
|
44 do k=1,7
|
|
45 w = w * (-4_2)
|
|
46 if (w /= (-4_2) ** k) stop 7
|
|
47 end do
|
|
48 w = 1
|
|
49 do i=1,5
|
|
50 w = w * (-8_2)
|
|
51 if (w /= (-8_2) ** i) stop 8
|
|
52 end do
|
|
53 u = 1
|
|
54 do i=1,1
|
|
55 u = u * (-HUGE(1_4)/2-1)
|
|
56 if (u /= (-HUGE(1_4)/2-1) ** i) stop 9
|
|
57 end do
|
|
58 z = 1
|
|
59 do i=1,7
|
|
60 z = z * (-512_8)
|
|
61 if (z /= (-512_8) ** i) stop 10
|
|
62 end do
|
|
63 end program p
|
|
64 ! { dg-final { scan-tree-dump-not "_gfortran_pow" "original" } }
|