| ! { dg-do run } |
| ! { dg-options "-fdump-tree-original" } |
| ! |
| ! Check that copy loops to ensure contiguity of the result of a function |
| ! that returns a non-pointer array are generated properly after fixing |
| ! pr103390, and that it does not ICE. In this case no copying is required. |
| |
| program p |
| integer, pointer :: z(:) |
| integer, target :: x(3) = [1, 2, 3] |
| z => x |
| call s(i(z)) |
| contains |
| function i(x) |
| integer :: i(3) |
| integer, pointer :: x(:) |
| i = x |
| end |
| subroutine s(x) bind(c) |
| integer, contiguous :: x(:) |
| end |
| end |
| |
| ! Expect one loop to copy the array contents to a temporary in function i. |
| ! { dg-final { scan-tree-dump-times "while \\(1\\)" 1 "original" } } |
| |
| ! It should not emit code to check the contiguous property. |
| ! { dg-final { scan-tree-dump-not "contiguous\\.\[0-9\]+" "original" } } |
| |