| 1 | ! Audit #4 CRITICAL-3 — multi-dimensional slice prints now |
| 2 | ! lower as nested column-major loops directly, bypassing the |
| 3 | ! afs_create_section descriptor path that crashed on bare |
| 4 | ! stack arrays. |
| 5 | ! |
| 6 | ! For a 3x3 column-major matrix: |
| 7 | ! m(1,1)=11 m(1,2)=12 m(1,3)=13 |
| 8 | ! m(2,1)=21 m(2,2)=22 m(2,3)=23 |
| 9 | ! m(3,1)=31 m(3,2)=32 m(3,3)=33 |
| 10 | ! |
| 11 | ! Iteration order is column-major per F2018 §6.5.3.3 — the |
| 12 | ! first subscript varies fastest. So `m(2:3, 1:2)` walks |
| 13 | ! (2,1), (3,1), (2,2), (3,2) → 21, 31, 22, 32. |
| 14 | ! |
| 15 | ! CHECK: 11 21 31 |
| 16 | ! CHECK: 11 12 13 |
| 17 | ! CHECK: 21 31 22 32 |
| 18 | program audit4_c3_multidim_slice_print |
| 19 | integer :: m(3,3) |
| 20 | integer :: i, j |
| 21 | do j = 1, 3 |
| 22 | do i = 1, 3 |
| 23 | m(i, j) = i * 10 + j |
| 24 | end do |
| 25 | end do |
| 26 | print *, m(:, 1) |
| 27 | print *, m(1, :) |
| 28 | print *, m(2:3, 1:2) |
| 29 | end program |
| 30 |