diff options
author | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2020-06-23 17:17:50 +0200 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2020-06-23 17:20:27 +0200 |
commit | 95c9c1c0dcbe4b9bfd9ff8fcdf44d799ffcf6275 (patch) | |
tree | 5561797314d87d38c331274ac6255cc1e0d584e9 /gcc/ada | |
parent | 5f426554fd804d65509875d706d8b8bc3a48393b (diff) | |
download | gcc-95c9c1c0dcbe4b9bfd9ff8fcdf44d799ffcf6275.zip gcc-95c9c1c0dcbe4b9bfd9ff8fcdf44d799ffcf6275.tar.gz gcc-95c9c1c0dcbe4b9bfd9ff8fcdf44d799ffcf6275.tar.bz2 |
Minor adjustment in assignment case
gcc/ada/ChangeLog:
* gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Do
not test Is_Bit_Packed_Array in the memset path.
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/gcc-interface/trans.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index 313a2fb..a64b6d0 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -7282,10 +7282,8 @@ gnat_to_gnu (Node_Id gnat_node) : gnat_expr; const Entity_Id gnat_type = Underlying_Type (Etype (Name (gnat_node))); - const bool regular_array_type_p - = Is_Array_Type (gnat_type) && !Is_Bit_Packed_Array (gnat_type); const bool use_memset_p - = regular_array_type_p + = Is_Array_Type (gnat_type) && Nkind (gnat_inner) == N_Aggregate && Is_Single_Aggregate (gnat_inner); @@ -7356,7 +7354,8 @@ gnat_to_gnu (Node_Id gnat_node) not completely disjoint, play safe and use memmove. But don't do it for a bit-packed array as it might not be byte-aligned. */ if (TREE_CODE (gnu_result) == MODIFY_EXPR - && regular_array_type_p + && Is_Array_Type (gnat_type) + && !Is_Bit_Packed_Array (gnat_type) && !(Forwards_OK (gnat_node) && Backwards_OK (gnat_node))) { tree to = TREE_OPERAND (gnu_result, 0); |