https://gcc.gnu.org/g:aada6d75fe6392475c2abc02f5725690edc420cc

commit r16-1954-gaada6d75fe6392475c2abc02f5725690edc420cc
Author: Bob Duff <d...@adacore.com>
Date:   Mon Jun 16 11:03:22 2025 -0400

    ada: More Tbuild cleanup
    
    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.

Diff:
---
 gcc/ada/gen_il-gen-gen_nodes.adb | 7 +------
 gcc/ada/tbuild.adb               | 6 +++---
 2 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/gcc/ada/gen_il-gen-gen_nodes.adb b/gcc/ada/gen_il-gen-gen_nodes.adb
index debc66b0fcd6..f4e79173502c 100644
--- a/gcc/ada/gen_il-gen-gen_nodes.adb
+++ b/gcc/ada/gen_il-gen-gen_nodes.adb
@@ -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),
diff --git a/gcc/ada/tbuild.adb b/gcc/ada/tbuild.adb
index 52fdbfc2163f..b89c40851bc1 100644
--- a/gcc/ada/tbuild.adb
+++ b/gcc/ada/tbuild.adb
@@ -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);

Reply via email to