aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2023-10-03 19:04:16 +0200
committerMarc Poulhiès <poulhies@adacore.com>2023-11-07 10:15:02 +0100
commitdedaaa81cc7c518404080505e9b74aa0919c7587 (patch)
tree90b34869f69ce1c4e5a789fc1427a2f36c33456d
parent7385cd358d3b054c1babb3f9af3c6995716d9e4b (diff)
downloadgcc-dedaaa81cc7c518404080505e9b74aa0919c7587.zip
gcc-dedaaa81cc7c518404080505e9b74aa0919c7587.tar.gz
gcc-dedaaa81cc7c518404080505e9b74aa0919c7587.tar.bz2
ada: Simplify expansion of packed array assignments
When expanding assignment to a packed array object, e.g. a formal parameter with mode OUT that might have unconstrained type, we took the component type and component size from the constrained actual subtype. It is simpler to take these properties from the nominal type of the assigned object. Semantics is unaffected, because constraining the array doesn't change the type or size of the array components. gcc/ada/ * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Change Ctyp and Csiz from variables to constants and compute them using the nominal type of the assigned array object.
-rw-r--r--gcc/ada/exp_pakd.adb8
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/ada/exp_pakd.adb b/gcc/ada/exp_pakd.adb
index 68f0db3..2b92c46 100644
--- a/gcc/ada/exp_pakd.adb
+++ b/gcc/ada/exp_pakd.adb
@@ -1059,10 +1059,12 @@ package body Exp_Pakd is
Obj : Node_Id;
Atyp : Entity_Id;
PAT : Entity_Id;
- Ctyp : Entity_Id;
- Csiz : Int;
Cmask : Uint;
+ Arr_Typ : constant Entity_Id := Etype (Prefix (Lhs));
+ Ctyp : constant Entity_Id := Component_Type (Arr_Typ);
+ Csiz : constant Int := UI_To_Int (Component_Size (Arr_Typ));
+
Shift : Node_Id;
-- The expression for the shift value that is required
@@ -1111,8 +1113,6 @@ package body Exp_Pakd is
Convert_To_Actual_Subtype (Obj);
Atyp := Etype (Obj);
PAT := Packed_Array_Impl_Type (Atyp);
- Ctyp := Component_Type (Atyp);
- Csiz := UI_To_Int (Component_Size (Atyp));
-- We remove side effects, in case the rhs modifies the lhs, because we
-- are about to transform the rhs into an expression that first READS