1! We want to check that ISHFT evaluates its arguments only once 2! 3! { dg-do run } 4! { dg-options "-fdump-tree-original" } 5 6program test 7 8 if (ishft (foo(), 2) /= 4) STOP 1 9 if (ishft (foo(), -1) /= 1) STOP 2 10 if (ishft (1, foo()) /= 8) STOP 3 11 if (ishft (16, -foo()) /= 1) STOP 4 12 13 if (ishftc (bar(), 2) /= 4) STOP 5 14 if (ishftc (bar(), -1) /= 1) STOP 6 15 if (ishftc (1, bar()) /= 8) STOP 7 16 if (ishftc (16, -bar()) /= 1) STOP 8 17 18contains 19 20 integer function foo () 21 integer, save :: i = 0 22 i = i + 1 23 foo = i 24 end function 25 26 integer function bar () 27 integer, save :: i = 0 28 i = i + 1 29 bar = i 30 end function 31 32end program 33 34! The regexp "foo ()" should be seen once in the dump: 35! -- once in the function definition itself 36! -- plus as many times as the function is called 37! 38! { dg-final { scan-tree-dump-times "foo *\\\(\\\)" 5 "original" } } 39! { dg-final { scan-tree-dump-times "bar *\\\(\\\)" 5 "original" } } 40