diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-08-04 09:09:53 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-08-04 09:09:53 +0000 |
commit | ada34defa75a6170e63bbe2f141a285383f8d25e (patch) | |
tree | 2828113a0adb99fba99fd5be023a012fe6df3036 /gcc/ada/layout.adb | |
parent | 423f3858dcd90e10987db190630fca9840b3fe77 (diff) | |
download | gcc-ada34defa75a6170e63bbe2f141a285383f8d25e.tar.gz |
2011-08-04 Eric Botcazou <ebotcazou@adacore.com>
* layout.adb (Layout_Type): For composite types, do not set Esize.
* freeze.adb (Set_Small_Size): Remove test on alignment and do not
set Esize.
(Size_Known): Look at the RM size of components instead of the Esize.
(Freeze_Record_Type): Look at the RM size instead of the Esize to
issue warning and activate Implicit_Packing.
(Freeze_Entity): Likewise. Do not issue a warning for alias/atomic
if the Esize is not known.
* sem_ch13.adb (Analyze_Attribute_Definition_Clause) <Size>: Set Esize
for elementary types only.
(Analyze_Record_Representation_Clause): Look at the RM size instead
of the Esize to issue errors.
* gcc-interface/decl.c (gnat_to_gnu_entity): Do not set Esize if it
is not known.
<E_Record_Type>: Look at the RM size instead of the Esize. Remove
obsolete block.
Look at the RM size instead of the Esize for types if the latter is
not known.
(gnat_to_gnu_field): Use Known_Esize instead of Known_Static_Esize.
2011-08-04 Ed Schonberg <schonberg@adacore.com>
* sem_type.adb: proper handling of equality not involving anonymous
access types.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177339 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/layout.adb')
-rw-r--r-- | gcc/ada/layout.adb | 18 |
1 files changed, 1 insertions, 17 deletions
diff --git a/gcc/ada/layout.adb b/gcc/ada/layout.adb index 09d3ce1ac8d..bb8aa113211 100644 --- a/gcc/ada/layout.adb +++ b/gcc/ada/layout.adb @@ -2574,27 +2574,11 @@ package body Layout is end; end if; - -- If RM_Size is known, set Esize if not known - - if Known_RM_Size (E) and then Unknown_Esize (E) then - - -- If the alignment is known, we bump the Esize up to the next - -- alignment boundary if it is not already on one. - - if Known_Alignment (E) then - declare - A : constant Uint := Alignment_In_Bits (E); - S : constant SO_Ref := RM_Size (E); - begin - Set_Esize (E, (S + A - 1) / A * A); - end; - end if; - -- If Esize is set, and RM_Size is not, RM_Size is copied from Esize. -- At least for now this seems reasonable, and is in any case needed -- for compatibility with old versions of gigi. - elsif Known_Esize (E) and then Unknown_RM_Size (E) then + if Known_Esize (E) and then Unknown_RM_Size (E) then Set_RM_Size (E, Esize (E)); end if; |