! { dg-do run } ! { dg-options "-fdec-structure -finit-derived -finit-local-zero" } ! ! Test a UNION with explicit initialization and -finit-derived. ! subroutine sub structure /s2/ integer(4) :: i = 8 union ! U7 map integer(4) :: x = 1600 integer(4) :: y = 1800 end map map integer(2) a, b, c, d, e, f, g, h end map end union end structure record /s2/ r2 ! Initialized unions if ( r2.i .ne. 8 ) then print *, 'structure init' STOP 1 endif ! Explicit initializations if ( r2.x .ne. 1600 .or. r2.y .ne. 1800) then r2.x = r2.y print *, 'union explicit init' STOP 2 endif ! Initialization from -finit-derived if ( r2.h .ne. 0 ) then r2.h = 135 print *, 'union default init' STOP 3 endif end subroutine ! Initialization expressions structure /s3/ integer(4) :: i = 8 union ! U7 map integer(4) :: x = 1600 integer(4) :: y = 1800 end map map integer(2) a, b, c, d, e end map end union end structure record /s3/ r3 ! Initialized unions if ( r3.i .ne. 8 ) then print *, 'structure init' STOP 4 endif ! Explicit initializations if ( r3.x .ne. 1600 .or. r3.y .ne. 1800) then r3.x = r3.y print *, 'union explicit init' STOP 5 endif ! Initialization from -finit-derived if ( r3.e .ne. 0 ) then r3.e = 135 print *, 'union default init' STOP 6 endif end