aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorJustin Squirek <squirek@adacore.com>2019-08-13 08:07:41 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2019-08-13 08:07:41 +0000
commit6aaab5081f44b00b78e9550b5a33ba81f85c162c (patch)
treefba5402adbdf304a27134e257cd2555558b74cf5 /gcc/ada
parent4de811c54e9dc78f7bca540125fcce804a39bb7c (diff)
downloadgcc-6aaab5081f44b00b78e9550b5a33ba81f85c162c.zip
gcc-6aaab5081f44b00b78e9550b5a33ba81f85c162c.tar.gz
gcc-6aaab5081f44b00b78e9550b5a33ba81f85c162c.tar.bz2
[Ada] Show Bit_Order and Scalar_Storage_Order in -gnatR4 output
This patch modifies the behavior of -gnatR4 so that representation information for bit and scalar storage order gets displayed in all cases and not just when defaults are overriden. ------------ -- Source -- ------------ -- pkg.ads package Pkg is type Root is tagged record Data0 : Integer; end record; type Derived is new Root with record Data1 : Integer; end record; end Pkg; ----------------- -- Compilation -- ----------------- $ gnatmake -gnatR4 pkg.ads Representation information for unit Pkg (spec) ---------------------------------------------- for Root'Size use 128; for Root'Alignment use 8; for Root use record Data0 at 8 range 0 .. 31; end record; for Root'Bit_Order use System.Low_Order_First; for Root'Scalar_Storage_Order use System.Low_Order_First; for Trootc'Size use 0; for Trootc'Alignment use 0; for Trootc use record end record; for Trootc'Bit_Order use System.Low_Order_First; for Trootc'Scalar_Storage_Order use System.Low_Order_First; for Derived'Size use 192; for Derived'Alignment use 8; for Derived use record Data0 at 8 range 0 .. 31; Data1 at 16 range 0 .. 31; end record; for Derived'Bit_Order use System.Low_Order_First; for Derived'Scalar_Storage_Order use System.Low_Order_First; for Tderivedc'Size use 0; for Tderivedc'Alignment use 0; for Tderivedc use record Data0 at 8 range 0 .. 31; Data1 at 16 range 0 .. 31; end record; for Tderivedc'Bit_Order use System.Low_Order_First; for Tderivedc'Scalar_Storage_Order use System.Low_Order_First;i 2019-08-13 Justin Squirek <squirek@adacore.com> gcc/ada/ * repinfo.adb (List_Scalar_Storage_Order): Modify conditionals for displaying ordering to always be triggered when -gnatR4 is in effect. From-SVN: r274347
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/repinfo.adb11
2 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 3acda6a..ade7e68 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,11 @@
2019-08-13 Justin Squirek <squirek@adacore.com>
+ * repinfo.adb (List_Scalar_Storage_Order): Modify conditionals
+ for displaying ordering to always be triggered when -gnatR4 is
+ in effect.
+
+2019-08-13 Justin Squirek <squirek@adacore.com>
+
* aspects.adb, aspects.ads: Register new aspect.
* par-prag.adb (Prag): Register new pragma
* sem_ch13.adb (Analyze_Aspect_Specifications): Add processing
diff --git a/gcc/ada/repinfo.adb b/gcc/ada/repinfo.adb
index 77b5c21..d168e90 100644
--- a/gcc/ada/repinfo.adb
+++ b/gcc/ada/repinfo.adb
@@ -1816,8 +1816,15 @@ package body Repinfo is
begin
-- For record types, list Bit_Order if not default, or if SSO is shown
+ -- Also, when -gnatR4 is in effect always list bit order and scalar
+ -- storage order explicitly, so that you don't need to know the native
+ -- endianness of the target for which the output was produced in order
+ -- to interpret it.
+
if Is_Record_Type (Ent)
- and then (List_SSO or else Reverse_Bit_Order (Ent))
+ and then (List_SSO
+ or else Reverse_Bit_Order (Ent)
+ or else List_Representation_Info = 4)
then
List_Attr ("Bit_Order", Reverse_Bit_Order (Ent));
end if;
@@ -1825,7 +1832,7 @@ package body Repinfo is
-- List SSO if required. If not, then storage is supposed to be in
-- native order.
- if List_SSO then
+ if List_SSO or else List_Representation_Info = 4 then
List_Attr ("Scalar_Storage_Order", Reverse_Storage_Order (Ent));
else
pragma Assert (not Reverse_Storage_Order (Ent));