view gcc/testsuite/gnat.dg/component_size.adb @ 140:4e440907fcbf

copy CbC goto flang in cfgexpand remove some CbC unnecessary code
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 14 Nov 2018 00:24:45 +0900
parents 84e7813d76e9
children
line wrap: on
line source

--  { dg-do run }

procedure Component_Size is

   C_Unsigned_Long_Size : constant := 32;
   type T_Unsigned_Long is range 0 .. (2 ** 31) - 1;
   for T_Unsigned_Long'Size use C_Unsigned_Long_Size;

   C_Unsigned_Byte_Size : constant := 8;
   type T_Unsigned_Byte is range 0 .. (2 ** 8) - 1;
   for T_Unsigned_Byte'Size use C_Unsigned_Byte_Size;

   type T_Unsigned_Byte_Without_Size_Repr is range 0 .. (2 ** 8) - 1;

   C_Nb_Data : constant T_Unsigned_Long := 9;
   subtype T_Nb_Data is T_Unsigned_Long range 1 .. C_Nb_Data;
   
   type T_Wrong_Id is array (T_Nb_Data) of T_Unsigned_Byte;
   for T_Wrong_Id'Component_Size use C_Unsigned_Long_Size;

   type T_Correct_Id is array (T_Nb_Data) of T_Unsigned_Byte_Without_Size_Repr;
   for T_Correct_Id'Component_Size use C_Unsigned_Long_Size;  

   C_Value : constant := 1;

   C_Wrong_Id : constant T_Wrong_Id := T_Wrong_Id'(others => C_Value);
   C_Correct_Id : constant T_Correct_Id := T_Correct_Id'(others => C_Value);

begin
   if C_Correct_Id /= T_Correct_Id'(others => C_Value) then
      raise Program_Error;
   end if;

   if C_Wrong_Id /= T_Wrong_Id'(others => C_Value) then
      raise Program_Error;
   end if;
end;