This documents the implementation choice made for byte-packed array
types, where we let the code generator deal with them if the type is
composite and use the manipulation routines of the front-end if the
type is discrete.
Tested on x86_64-pc-linux-gnu, committed on trunk
gcc/ada/
* freeze.adb (Freeze_Array_Type): Add comment on implementation
choice for byte-packed array types.
diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb
--- a/gcc/ada/freeze.adb
+++ b/gcc/ada/freeze.adb
@@ -2928,7 +2928,10 @@ package body Freeze is
-- Bit packing is not needed for multiples of the storage
-- unit if the type is composite because the back end can
- -- byte pack composite types.
+ -- byte pack composite types efficiently. That's not true
+ -- for discrete types because every read would generate a
+ -- lot of instructions, so we keep using the manipulation
+ -- routines of the runtime for them.
elsif Csiz mod System_Storage_Unit = 0
and then Is_Composite_Type (Ctyp)