-- { dg-do run }
-- { dg-options "-gnatp" }

procedure Hyper_Flat is

   type Unsigned is mod 2 ** 32;
   x : Integer := 0;
   pragma Volatile (X);

   S : constant String := (1 .. X - 3 => 'A');
   --  Hyper-flat null string

begin
   if Unsigned'(S'Length) /= 0 then
      raise Program_Error;
   end if;
end;