aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/exp_ch5.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2012-05-15 13:02:25 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2012-05-15 13:02:25 +0200
commit8c5b2819fa3377dec06665fe8dfded5e3c638bc9 (patch)
tree03a8cd81be1c8ea5788d3f7a31ca35040a709cdc /gcc/ada/exp_ch5.adb
parent3ee8dde59cd9a08b9ad51aabed67dea280720fdf (diff)
downloadgcc-8c5b2819fa3377dec06665fe8dfded5e3c638bc9.zip
gcc-8c5b2819fa3377dec06665fe8dfded5e3c638bc9.tar.gz
gcc-8c5b2819fa3377dec06665fe8dfded5e3c638bc9.tar.bz2
[multiple changes]
2012-05-15 Yannick Moy <moy@adacore.com> * aspects.ads: Minor addition of comments to provide info on how to add new aspects. 2012-05-15 Thomas Quinot <quinot@adacore.com> * osint.ads: Minor reformatting. 2012-05-15 Thomas Quinot <quinot@adacore.com> * exp_ch5.adb, exp_pakd.adb, sem_util.adb, sem_util.ads (Expand_Assign_Array): Handle the case of a packed bit array within a record with reverse storage order (assign element by element in that case). (In_Reverse_Storage_Order_Record): New subprogram, code extracted from Exp_Pakd. 2012-05-15 Yannick Moy <moy@adacore.com> * a-ngelfu.ads: Add postconditions using Ada 2012 aspect syntax, reflecting some of the RM requirements for these functions, from Annex A.5.1 or G.2.4. 2012-05-15 Thomas Quinot <quinot@adacore.com> * adaint.c: Minor fix: move misplaced comment. 2012-05-15 Doug Rupp <rupp@adacore.com> * vms_data.ads: Enhance help for /IMMEDIATE_ERRORS to discourage use by customers. From-SVN: r187525
Diffstat (limited to 'gcc/ada/exp_ch5.adb')
-rw-r--r--gcc/ada/exp_ch5.adb13
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb
index 82fc705..0acb74b 100644
--- a/gcc/ada/exp_ch5.adb
+++ b/gcc/ada/exp_ch5.adb
@@ -344,7 +344,18 @@ package body Exp_Ch5 is
elsif Has_Controlled_Component (L_Type) then
Loop_Required := True;
- -- If object is atomic, we cannot tolerate a loop
+ -- If changing scalar storage order and assigning a bit packed arrau,
+ -- force loop expansion.
+
+ elsif Is_Bit_Packed_Array (L_Type)
+ and then
+ (In_Reverse_Storage_Order_Record (Rhs)
+ /=
+ In_Reverse_Storage_Order_Record (Lhs))
+ then
+ Loop_Required := True;
+
+ -- If object is atomic, we cannot tolerate a loop
elsif Is_Atomic_Object (Act_Lhs)
or else