diff options
author | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-04-07 11:38:06 +0000 |
---|---|---|
committer | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-04-07 11:38:06 +0000 |
commit | 02433bf7f097de2d710298811b1626a969f61060 (patch) | |
tree | ac0006f43531b02d2b839144ae3cd43264776aeb /gcc/testsuite/gnat.dg | |
parent | 664dfc7850f8dd5b7dc17da74821abf2be9091b1 (diff) | |
download | gcc-02433bf7f097de2d710298811b1626a969f61060.tar.gz |
* exp_pakd.adb (Create_Packed_Array_Type): Always use a modular type
if the size is small enough. Propagate the alignment if there is an
alignment clause on the original array type.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Subtype>
Deal with under-aligned packed array types. Copy the size onto the
justified modular type and don't lay it out again. Likewise for the
padding type built for other under-aligned subtypes.
* gcc-interface/utils.c (finish_record_type): Do not set a default mode
on the type.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158056 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gnat.dg')
-rw-r--r-- | gcc/testsuite/gnat.dg/bit_packed_array1.adb (renamed from gcc/testsuite/gnat.dg/bit_packed_array.adb) | 4 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/bit_packed_array1.ads (renamed from gcc/testsuite/gnat.dg/bit_packed_array.ads) | 7 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/bit_packed_array4.adb | 11 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/bit_packed_array4.ads | 18 |
4 files changed, 35 insertions, 5 deletions
diff --git a/gcc/testsuite/gnat.dg/bit_packed_array.adb b/gcc/testsuite/gnat.dg/bit_packed_array1.adb index fcdd69eb47b..10fd2921f54 100644 --- a/gcc/testsuite/gnat.dg/bit_packed_array.adb +++ b/gcc/testsuite/gnat.dg/bit_packed_array1.adb @@ -3,7 +3,7 @@ -- { dg-do compile } -package body Bit_Packed_Array is +package body Bit_Packed_Array1 is procedure Generate_Callforward is Compiler_Crash : String := @@ -13,4 +13,4 @@ package body Bit_Packed_Array is null; end Generate_Callforward; -end Bit_Packed_Array; +end Bit_Packed_Array1; diff --git a/gcc/testsuite/gnat.dg/bit_packed_array.ads b/gcc/testsuite/gnat.dg/bit_packed_array1.ads index 525536ee646..a0d5ab7a8df 100644 --- a/gcc/testsuite/gnat.dg/bit_packed_array.ads +++ b/gcc/testsuite/gnat.dg/bit_packed_array1.ads @@ -1,13 +1,14 @@ with Interfaces; -package Bit_Packed_Array is +package Bit_Packed_Array1 is type laser_illuminator_code_group_t is (zero, one); pragma Convention (C, laser_illuminator_code_group_t); subtype lic_array_index_t is Interfaces.Unsigned_8 range 0 .. 3; - type lic_array_t is array (lic_array_index_t) of laser_illuminator_code_group_t; + type lic_array_t is array (lic_array_index_t) + of laser_illuminator_code_group_t; pragma Convention (C, lic_array_t); type Eighty_Bytes_T is array (1 .. 80) of Interfaces.Unsigned_8; @@ -30,4 +31,4 @@ package Bit_Packed_Array is procedure Generate_Callforward; -end Bit_Packed_Array; +end Bit_Packed_Array1; diff --git a/gcc/testsuite/gnat.dg/bit_packed_array4.adb b/gcc/testsuite/gnat.dg/bit_packed_array4.adb new file mode 100644 index 00000000000..35088a7eba4 --- /dev/null +++ b/gcc/testsuite/gnat.dg/bit_packed_array4.adb @@ -0,0 +1,11 @@ +-- { dg-do compile } + +package body Bit_Packed_Array4 is + + procedure Process (M : Message_Type) is + D : Data_Type; + begin + D := M.Data; + end; + +end Bit_Packed_Array4; diff --git a/gcc/testsuite/gnat.dg/bit_packed_array4.ads b/gcc/testsuite/gnat.dg/bit_packed_array4.ads new file mode 100644 index 00000000000..7713e8f3e5b --- /dev/null +++ b/gcc/testsuite/gnat.dg/bit_packed_array4.ads @@ -0,0 +1,18 @@ +package Bit_Packed_Array4 is + + type Data_Type is array (1 .. 39) of Boolean; + pragma Pack (Data_Type); + for Data_Type'Alignment use 1; + + type Message_Type is record + Valid : Boolean; + Data : Data_Type; + end record; + for Message_Type use record + Valid at 0 range 0 .. 0; + Data at 0 range 1 .. 39; + end record; + + procedure Process (M : Message_Type); + +end Bit_Packed_Array4; |