1! { dg-do run } 2! { dg-options "-fdump-tree-original" } 3! 4! PR fortran/41907 5! 6program test 7 implicit none 8 call scalar1 () 9 call assumed_shape1 () 10 call explicit_shape1 () 11contains 12 13 ! Calling functions 14 subroutine scalar1 (slr1) 15 integer, optional :: slr1 16 call scalar2 (slr1) 17 end subroutine scalar1 18 19 subroutine assumed_shape1 (as1) 20 integer, dimension(:), optional :: as1 21 call assumed_shape2 (as1) 22 call explicit_shape2 (as1) 23 end subroutine assumed_shape1 24 25 subroutine explicit_shape1 (es1) 26 integer, dimension(5), optional :: es1 27 call assumed_shape2 (es1) 28 call explicit_shape2 (es1) 29 end subroutine explicit_shape1 30 31 32 ! Called functions 33 subroutine assumed_shape2 (as2) 34 integer, dimension(:),optional :: as2 35 if (present (as2)) call abort() 36 end subroutine assumed_shape2 37 38 subroutine explicit_shape2 (es2) 39 integer, dimension(5),optional :: es2 40 if (present (es2)) call abort() 41 end subroutine explicit_shape2 42 43 subroutine scalar2 (slr2) 44 integer, optional :: slr2 45 if (present (slr2)) call abort() 46 end subroutine scalar2 47 48end program test 49 50! { dg-final { scan-tree-dump-times "scalar2 \\(slr1" 1 "original" } } 51 52! { dg-final { scan-tree-dump-times "= es1 != 0B" 1 "original" } } 53! { dg-final { scan-tree-dump-times "assumed_shape2 \\(es1" 0 "original" } } 54! { dg-final { scan-tree-dump-times "explicit_shape2 \\(es1" 1 "original" } } 55 56! { dg-final { scan-tree-dump-times "= as1 != 0B" 2 "original" } } 57! { dg-final { scan-tree-dump-times "assumed_shape2 \\(as1" 0 "original" } } 58! { dg-final { scan-tree-dump-times "explicit_shape2 \\(as1" 0 "original" } } 59 60