From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from rock.gnat.com (rock.gnat.com [IPv6:2620:20:4000:0:a9e:1ff:fe9b:1d1]) by sourceware.org (Postfix) with ESMTPS id C9B30382C420 for ; Wed, 30 Jun 2021 09:30:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C9B30382C420 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 60119116C5C for ; Wed, 30 Jun 2021 05:30:45 -0400 (EDT) X-Virus-Scanned: Debian amavisd-new at gnat.com Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id jbnPlxqYsbDA for ; Wed, 30 Jun 2021 05:30:45 -0400 (EDT) Received: from tron.gnat.com (tron.gnat.com [205.232.38.10]) by rock.gnat.com (Postfix) with ESMTP id 487D2116A8F for ; Wed, 30 Jun 2021 05:30:45 -0400 (EDT) Received: by tron.gnat.com (Postfix, from userid 4862) id 460991E7; Wed, 30 Jun 2021 05:30:45 -0400 (EDT) Date: Wed, 30 Jun 2021 05:30:45 -0400 From: Pierre-Marie de Rodat To: gcc-patches@gcc.gnu.org Subject: [Ada] Factor out many fields in entities Message-ID: <20210630093045.GA147310@adacore.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="envbJBWh7q8WU6mo" Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jun 2021 09:30:47 -0000 --envbJBWh7q8WU6mo Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Also minor reformatting nearby. Tested on x86_64-pc-linux-gnu, committed on trunk gcc/ada/ * gen_il-gen-gen_entities.adb (Record_Field_Kind, Allocatable_Kind): Add new abstract kinds. (Constant_Or_Variable_Kind): Likewise. (E_Constant, E_Variable, E_Loop_Parameter): Use them. (E_Discriminant, E_Component): Likewise. * gen_il-types.ads (type Opt_Type_Enum): Add them. --envbJBWh7q8WU6mo Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="patch.diff" diff --git a/gcc/ada/gen_il-gen-gen_entities.adb b/gcc/ada/gen_il-gen-gen_entities.adb --- a/gcc/ada/gen_il-gen-gen_entities.adb +++ b/gcc/ada/gen_il-gen-gen_entities.adb @@ -242,8 +242,8 @@ begin -- Gen_IL.Gen.Gen_Entities -- The initial Ekind value for a newly created entity. Also used as the -- Ekind for Standard_Void_Type, a type entity in Standard used as a -- dummy type for the return type of a procedure (the reason we create - -- this type is to share the circuits for performing overload resolution - -- on calls). + -- this type is to share the circuits for performing overload + -- resolution on calls). (Sm (Alignment, Uint), Sm (Contract, Node_Id), Sm (Is_Elaboration_Warnings_OK_Id, Flag), @@ -254,7 +254,9 @@ begin -- Gen_IL.Gen.Gen_Entities Sm (Current_Value, Node_Id), -- setter only Sm (Has_Predicates, Flag), -- setter only Sm (Initialization_Statements, Node_Id), -- setter only - Sm (Is_Param_Block_Component_Type, Flag, Base_Type_Only), -- setter only + Sm (Is_Param_Block_Component_Type, Flag, Base_Type_Only), + -- setter only + Sm (Package_Instantiation, Node_Id), -- setter only Sm (Related_Expression, Node_Id), -- setter only @@ -302,17 +304,10 @@ begin -- Gen_IL.Gen.Gen_Entities (Sm (Current_Value, Node_Id), Sm (Renamed_Or_Alias, Node_Id))); - Cc (E_Component, Object_Kind, - -- Components of a record declaration, private declarations of - -- protected objects. + Ab (Record_Field_Kind, Object_Kind, (Sm (Component_Bit_Offset, Uint), Sm (Component_Clause, Node_Id), Sm (Corresponding_Record_Component, Node_Id), - Sm (Discriminant_Checking_Func, Node_Id), - Sm (DT_Entry_Count, Uint, - Pre => "Is_Tag (N)"), - Sm (DT_Offset_To_Top_Func, Node_Id, - Pre => "Is_Tag (N)"), Sm (Entry_Formal, Node_Id), Sm (Esize, Uint), Sm (Interface_Name, Node_Id), @@ -320,114 +315,80 @@ begin -- Gen_IL.Gen.Gen_Entities Sm (Normalized_First_Bit, Uint), Sm (Normalized_Position, Uint), Sm (Normalized_Position_Max, Uint), - Sm (Original_Record_Component, Node_Id), + Sm (Original_Record_Component, Node_Id))); + + Cc (E_Component, Record_Field_Kind, + -- Components of a record declaration, private declarations of + -- protected objects. + (Sm (Discriminant_Checking_Func, Node_Id), + Sm (DT_Entry_Count, Uint, + Pre => "Is_Tag (N)"), + Sm (DT_Offset_To_Top_Func, Node_Id, + Pre => "Is_Tag (N)"), Sm (Prival, Node_Id, Pre => "Is_Protected_Component (N)"), Sm (Related_Type, Node_Id))); - Cc (E_Constant, Object_Kind, - -- Constants created by an object declaration with a constant keyword + Ab (Allocatable_Kind, Object_Kind, (Sm (Activation_Record_Component, Node_Id), - Sm (Actual_Subtype, Node_Id), Sm (Alignment, Uint), + Sm (Esize, Uint), + Sm (Interface_Name, Node_Id), + Sm (Is_Finalized_Transient, Flag), + Sm (Is_Ignored_Transient, Flag), + Sm (Linker_Section_Pragma, Node_Id), + Sm (Related_Expression, Node_Id), + Sm (Status_Flag_Or_Transient_Decl, Node_Id))); + + Ab (Constant_Or_Variable_Kind, Allocatable_Kind, + (Sm (Actual_Subtype, Node_Id), Sm (BIP_Initialization_Call, Node_Id), Sm (Contract, Node_Id), Sm (Discriminal_Link, Node_Id), Sm (Encapsulating_State, Node_Id), - Sm (Esize, Uint), Sm (Extra_Accessibility, Node_Id), - Sm (Full_View, Node_Id), Sm (Initialization_Statements, Node_Id), - Sm (Interface_Name, Node_Id), Sm (Is_Elaboration_Checks_OK_Id, Flag), Sm (Is_Elaboration_Warnings_OK_Id, Flag), - Sm (Is_Finalized_Transient, Flag), - Sm (Is_Ignored_Transient, Flag), Sm (Last_Aggregate_Assignment, Node_Id), - Sm (Linker_Section_Pragma, Node_Id), Sm (Optimize_Alignment_Space, Flag), Sm (Optimize_Alignment_Time, Flag), Sm (Prival_Link, Node_Id), - Sm (Related_Expression, Node_Id), Sm (Related_Type, Node_Id), Sm (Return_Statement, Node_Id), Sm (Size_Check_Code, Node_Id), Sm (SPARK_Pragma, Node_Id), - Sm (SPARK_Pragma_Inherited, Flag), - Sm (Status_Flag_Or_Transient_Decl, Node_Id))); + Sm (SPARK_Pragma_Inherited, Flag))); + + Cc (E_Constant, Constant_Or_Variable_Kind, + -- Constants created by an object declaration with a constant keyword + (Sm (Full_View, Node_Id))); - Cc (E_Discriminant, Object_Kind, + Cc (E_Discriminant, Record_Field_Kind, -- A discriminant, created by the use of a discriminant in a type -- declaration. - (Sm (Component_Bit_Offset, Uint), - Sm (Component_Clause, Node_Id), - Sm (Corresponding_Discriminant, Node_Id), - Sm (Corresponding_Record_Component, Node_Id), + (Sm (Corresponding_Discriminant, Node_Id), Sm (CR_Discriminant, Node_Id), Sm (Discriminal, Node_Id), Sm (Discriminant_Default_Value, Node_Id), Sm (Discriminant_Number, Uint), - Sm (Entry_Formal, Node_Id), - Sm (Esize, Uint), - Sm (Interface_Name, Node_Id), - Sm (Is_Completely_Hidden, Flag), - Sm (Linker_Section_Pragma, Node_Id), - Sm (Normalized_First_Bit, Uint), - Sm (Normalized_Position, Uint), - Sm (Normalized_Position_Max, Uint), - Sm (Original_Record_Component, Node_Id))); + Sm (Is_Completely_Hidden, Flag))); - Cc (E_Loop_Parameter, Object_Kind, - -- A loop parameter created by a for loop - (Sm (Activation_Record_Component, Node_Id), - Sm (Alignment, Uint), - Sm (Esize, Uint), - Sm (Interface_Name, Node_Id), - Sm (Is_Finalized_Transient, Flag), - Sm (Is_Ignored_Transient, Flag), - Sm (Linker_Section_Pragma, Node_Id), - Sm (Related_Expression, Node_Id), - Sm (Status_Flag_Or_Transient_Decl, Node_Id))); + Cc (E_Loop_Parameter, Allocatable_Kind); + -- A loop parameter created by a for loop - Cc (E_Variable, Object_Kind, + Cc (E_Variable, Constant_Or_Variable_Kind, -- Variables created by an object declaration with no constant keyword - (Sm (Activation_Record_Component, Node_Id), - Sm (Actual_Subtype, Node_Id), - Sm (Alignment, Uint), - Sm (Anonymous_Designated_Type, Node_Id), - Sm (BIP_Initialization_Call, Node_Id), - Sm (Contract, Node_Id), + (Sm (Anonymous_Designated_Type, Node_Id), Sm (Debug_Renaming_Link, Node_Id), - Sm (Discriminal_Link, Node_Id), - Sm (Encapsulating_State, Node_Id), - Sm (Esize, Uint), - Sm (Extra_Accessibility, Node_Id), Sm (Extra_Constrained, Node_Id), Sm (Has_Initial_Value, Flag), Sm (Hiding_Loop_Variable, Node_Id), - Sm (Initialization_Statements, Node_Id), - Sm (Interface_Name, Node_Id), - Sm (Is_Elaboration_Checks_OK_Id, Flag), - Sm (Is_Elaboration_Warnings_OK_Id, Flag), - Sm (Is_Finalized_Transient, Flag), - Sm (Is_Ignored_Transient, Flag), - Sm (Last_Aggregate_Assignment, Node_Id), Sm (Last_Assignment, Node_Id), - Sm (Linker_Section_Pragma, Node_Id), Sm (OK_To_Rename, Flag), - Sm (Optimize_Alignment_Space, Flag), - Sm (Optimize_Alignment_Time, Flag), Sm (Part_Of_Constituents, Elist_Id), Sm (Part_Of_References, Elist_Id), - Sm (Prival_Link, Node_Id), - Sm (Related_Expression, Node_Id), - Sm (Related_Type, Node_Id), - Sm (Return_Statement, Node_Id), Sm (Shared_Var_Procs_Instance, Node_Id), - Sm (Size_Check_Code, Node_Id), - Sm (SPARK_Pragma, Node_Id), - Sm (SPARK_Pragma_Inherited, Flag), - Sm (Status_Flag_Or_Transient_Decl, Node_Id), Sm (Suppress_Initialization, Flag), Sm (Unset_Reference, Node_Id), Sm (Validated_Object, Node_Id))); diff --git a/gcc/ada/gen_il-types.ads b/gcc/ada/gen_il-types.ads --- a/gcc/ada/gen_il-types.ads +++ b/gcc/ada/gen_il-types.ads @@ -124,6 +124,7 @@ package Gen_IL.Types is Access_Subprogram_Kind, Access_Protected_Kind, Aggregate_Kind, + Allocatable_Kind, Anonymous_Access_Kind, Array_Kind, Assignable_Kind, @@ -131,6 +132,7 @@ package Gen_IL.Types is Composite_Kind, Concurrent_Kind, Concurrent_Body_Kind, + Constant_Or_Variable_Kind, Decimal_Fixed_Point_Kind, Digits_Kind, Discrete_Kind, @@ -158,6 +160,7 @@ package Gen_IL.Types is Protected_Kind, Real_Kind, Record_Kind, + Record_Field_Kind, Scalar_Kind, Subprogram_Kind, Signed_Integer_Kind, --envbJBWh7q8WU6mo--