]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ada: More Tbuild cleanup
authorBob Duff <duff@adacore.com>
Mon, 16 Jun 2025 15:03:22 +0000 (11:03 -0400)
committerMarc Poulhiès <dkm@gcc.gnu.org>
Thu, 3 Jul 2025 08:16:28 +0000 (10:16 +0200)
Remove "Nmake_Assert => ..." on N_Unchecked_Type_Conversion at
gen_il-gen-gen_nodes.adb:473 (was disabled).

This was left over from commit 82a794419a00ea98b68d69b64363ae6746710de9
"Tbuild cleanup".

In addition, the checks for "Is_Composite_Type" in
Tbuild.Unchecked_Convert_To are narrowed to "not Is_Scalar_Type";
that way, useless duplicate unchecked conversions of access types will
be removed as for composite types.

gcc/ada/ChangeLog:

* gen_il-gen-gen_nodes.adb (N_Unchecked_Type_Conversion):
Remove useless Nmake_Assert.
* tbuild.adb (Unchecked_Convert_To):
Narrow the bitfield-related conditions.

gcc/ada/gen_il-gen-gen_nodes.adb
gcc/ada/tbuild.adb

index debc66b0fcd6a0ec37f80eaee89947ea964c6c36..f4e79173502c90e6b01e7bdfe365ce03756fb563 100644 (file)
@@ -469,12 +469,7 @@ begin -- Gen_IL.Gen.Gen_Nodes
        (Sy (Subtype_Mark, Node_Id, Default_Empty),
         Sy (Expression, Node_Id, Default_Empty),
         Sm (Kill_Range_Check, Flag),
-        Sm (No_Truncation, Flag)),
-       Nmake_Assert => "True or else Nkind (Expression) /= N_Unchecked_Type_Conversion");
---       Nmake_Assert => "Nkind (Expression) /= N_Unchecked_Type_Conversion");
-   --  Assert that we don't have unchecked conversions of unchecked
-   --  conversions; if Expression might be an unchecked conversion,
-   --  then Tbuild.Unchecked_Convert_To should be used.
+        Sm (No_Truncation, Flag)));
 
    Cc (N_Subtype_Indication, N_Has_Etype,
        (Sy (Subtype_Mark, Node_Id, Default_Empty),
index 52fdbfc2163f3f615bcac4c999f5855ce2129950..b89c40851bc19865f9eddf8aa323c93081fc9fea 100644 (file)
@@ -926,11 +926,11 @@ package body Tbuild is
       --  conversion of an unchecked conversion. Extra unchecked conversions
       --  make the .dg output less readable. We can't do this in cases
       --  involving bitfields, because the sizes might not match. The
-      --  Is_Composite_Type checks avoid such cases.
+      --  "not Is_Scalar_Type" checks avoid such cases.
 
       elsif Nkind (Expr) = N_Unchecked_Type_Conversion
-        and then Is_Composite_Type (Etype (Expr))
-        and then Is_Composite_Type (Typ)
+        and then not Is_Scalar_Type (Etype (Expr))
+        and then not Is_Scalar_Type (Typ)
       then
          Set_Subtype_Mark (Expr, New_Occurrence_Of (Typ, Loc));
          Result := Relocate_Node (Expr);