      ! { dg-do run }
      ! { dg-options "-fdec-structure" }
      !
      ! PR fortran/82511
      !
      ! Verify that structure variables with UNION components
      ! are accepted in an I/O-list READ.
      !
      implicit none

      structure /s/
        union
          map
            character(16) :: c16_1
          end map
          map
            character(16) :: c16_2
          end map
        end union
      end structure

      record /s/ r
      character(32) :: instr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^"

      r.c16_1 = '                '
      r.c16_2 = '                '
      ! The record r shall be treated as if its components are listed:
      ! read(...) r.c16_1, r.c16_2
      ! This shall correspond to the formatted read of A16,A16
      read(instr, '(A16,A16)') r

      ! r.c16_1 and r.c16_2 are in a union, thus share the same memory
      ! and the first 16 bytes of instr are overwritten
      if ( r.c16_1 .ne. instr(17:32) .or. r.c16_2 .ne. instr(17:32) ) then
        STOP 1
      endif

      end
