aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Quinot <quinot@adacore.com>2012-03-30 09:11:38 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2012-03-30 11:11:38 +0200
commit702d139e260512c2bc3bcee7def3d5fe22d8ab22 (patch)
tree67a5fa2238fda59bb2855f25482514b6b889f8f2 /gcc
parentaeb83f098d6740d61580014ab78d33abba1168fa (diff)
downloadgcc-702d139e260512c2bc3bcee7def3d5fe22d8ab22.zip
gcc-702d139e260512c2bc3bcee7def3d5fe22d8ab22.tar.gz
gcc-702d139e260512c2bc3bcee7def3d5fe22d8ab22.tar.bz2
freeze.adb (Freeze_Record_Type): For a type with reversed bit order and reversed storage order...
2012-03-30 Thomas Quinot <quinot@adacore.com> * freeze.adb (Freeze_Record_Type): For a type with reversed bit order and reversed storage order, disable front-end relayout. From-SVN: r185996
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/freeze.adb10
2 files changed, 14 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 7b8832d..baeff68 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2012-03-30 Thomas Quinot <quinot@adacore.com>
+
+ * freeze.adb (Freeze_Record_Type): For a type with reversed bit
+ order and reversed storage order, disable front-end relayout.
+
2012-03-25 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Copy
diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb
index fc76000..3eae40e 100644
--- a/gcc/ada/freeze.adb
+++ b/gcc/ada/freeze.adb
@@ -2161,8 +2161,16 @@ package body Freeze is
-- Here is where we do the processing for reversed bit order
- else
+ elsif not Reverse_Storage_Order (Rec) then
Adjust_Record_For_Reverse_Bit_Order (Rec);
+
+ -- Case where we have both a reverse Bit_Order and a corresponding
+ -- Scalar_Storage_Order: leave record untouched, the back-end
+ -- will take care of required layout conversions.
+
+ else
+ null;
+
end if;
end if;