Hi, following Mikael's recent patch series, here is a first idea of what extending clobbering to arrays wold look like. The attached patch works for a subset of cases, for example program main implicit none interface subroutine foo(a) integer, intent(out) :: a(*) end subroutine foo end interface integer, dimension(10) :: a call foo(a) end program main and program main implicit none interface subroutine foo(a) integer, intent(out) :: a(:) end subroutine foo end interface integer, dimension(10) :: a a(1) = 32 a(2) = 32 call foo(a) end program main but it does not cover cases like an assumed-size array being handed down to an INTENT(OUT) argument. What happens if the + if (!sym->attr.allocatable && !sym->attr.pointer + && !POINTER_TYPE_P (TREE_TYPE (sym->backend_decl))) part is taken out is that the whole descriptor can be clobbered in such a case, which is of course not what is wanted. I am a bit stuck of how to generate a reference to the first element of the array (really, just dereferencing the data pointer) in the most elegant way. I am currently leaning towards building a gfc_expr, which should work, but would be less than elegant. So, anything more elegant at hand? Best regards Thomas