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);