1! { dg-do run } 2 3! PR fortran/38883 4! This ICE'd because the temporary-creation in the MVBITS call was wrong. 5 6PROGRAM main 7 IMPLICIT NONE 8 9 TYPE inner 10 INTEGER :: i 11 INTEGER :: j 12 END TYPE inner 13 14 TYPE outer 15 TYPE(inner) :: comp(2) 16 END TYPE outer 17 18 TYPE(outer) :: var 19 20 var%comp%i = (/ 1, 2 /) 21 var%comp%j = (/ 3, 4 /) 22 23 CALL foobar (var, 1, 2) 24 25 IF (ANY (var%comp%i /= (/ 1, 2 /))) CALL abort () 26 IF (ANY (var%comp%j /= (/ 3, 4 /))) CALL abort () 27 28CONTAINS 29 30 SUBROUTINE foobar (x, lower, upper) 31 TYPE(outer), INTENT(INOUT) :: x 32 INTEGER, INTENT(IN) :: lower, upper 33 CALL MVBITS (x%comp%i, 1, 2, x%comp(lower:upper)%i, 1) 34 END SUBROUTINE foobar 35 36END PROGRAM main 37