public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [Ada] Renamed_Or_Alias cleanup
@ 2021-10-25 15:08 Pierre-Marie de Rodat
  0 siblings, 0 replies; only message in thread
From: Pierre-Marie de Rodat @ 2021-10-25 15:08 UTC (permalink / raw)
  To: gcc-patches; +Cc: Bob Duff

[-- Attachment #1: Type: text/plain, Size: 3019 bytes --]

There are three "fields" that are aliases for the Renamed_Or_Alias
field: Alias, Renamed_Entity, and Renamed_Object. The getters and
setters were (mis)used more or less interchangeably, in violation of the
comments.

This patch adds assertions to enforce the comments, and changes all of
the call sites to obey the comments, except for some call sites of
[Set_]Renamed_Object involving front end inlining and generation of
debug information, which are too complicated to fix and which are well
isolated from the other uses.

Tested on x86_64-pc-linux-gnu, committed on trunk

gcc/ada/

	* einfo-utils.ads, einfo-utils.adb (Alias, Set_Alias,
	Renamed_Entity, Set_Renamed_Entity, Renamed_Object,
	Set_Renamed_Object): Add assertions that reflect how these are
	supposed to be used and what they are supposed to return.
	(Renamed_Entity_Or_Object): New getter.
	(Set_Renamed_Object_Of_Possibly_Void): Setter that allows N to
	be E_Void.
	* checks.adb (Ensure_Valid): Use Renamed_Entity_Or_Object
	because this is called for both cases.
	* exp_dbug.adb (Debug_Renaming_Declaration): Use
	Renamed_Entity_Or_Object because this is called for both cases.
	Add assertions.
	* exp_util.adb (Possible_Bit_Aligned_Component): Likewise.
	* freeze.adb (Freeze_All_Ent): Likewise.
	* sem_ch5.adb (Within_Function): Likewise.
	* exp_attr.adb (Calculate_Header_Size): Call Renamed_Entity
	instead of Renamed_Object.
	* exp_ch11.adb (Expand_N_Raise_Statement): Likewise.
	* repinfo.adb (Find_Declaration): Likewise.
	* sem_ch10.adb (Same_Unit, Process_Spec_Clauses,
	Analyze_With_Clause, Install_Parents): Likewise.
	* sem_ch12.adb (Build_Local_Package, Needs_Body_Instantiated,
	Build_Subprogram_Renaming, Check_Formal_Package_Instance,
	Check_Generic_Actuals, In_Enclosing_Instance,
	Denotes_Formal_Package, Process_Nested_Formal,
	Check_Initialized_Types, Map_Formal_Package_Entities,
	Restore_Nested_Formal): Likewise.
	* sem_ch6.adb (Report_Conflict): Likewise.
	* sem_ch8.adb (Analyze_Exception_Renaming,
	Analyze_Generic_Renaming, Analyze_Package_Renaming,
	Is_Primitive_Operator_In_Use, Declared_In_Actual,
	Note_Redundant_Use): Likewise.
	* sem_warn.adb (Find_Package_Renaming): Likewise.
	* sem_elab.adb (Ultimate_Variable): Call Renamed_Object instead
	of Renamed_Entity.
	* exp_ch6.adb (Get_Function_Id): Call
	Set_Renamed_Object_Of_Possibly_Void, because the defining
	identifer is still E_Void at this point.
	* sem_util.adb (Function_Call_Or_Allocator_Level): Likewise.
	Remove redundant (unreachable) code.
	(Is_Object_Renaming, Is_Valid_Renaming): Call Renamed_Object
	instead of Renamed_Entity.
	(Get_Fullest_View): Call Renamed_Entity instead of
	Renamed_Object.
	(Copy_Node_With_Replacement): Call
	Set_Renamed_Object_Of_Possibly_Void because the defining entity
	is sometimes E_Void.
	* exp_ch5.adb (Expand_N_Assignment_Statement): Protect a call to
	Renamed_Object with Is_Object to avoid assertion failure.
	* einfo.ads: Minor comment fixes.
	* inline.adb: Minor comment fixes.
	* tbuild.ads: Minor comment fixes.

[-- Attachment #2: patch.diff.gz --]
[-- Type: application/gzip, Size: 8433 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-10-25 15:08 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-25 15:08 [Ada] Renamed_Or_Alias cleanup Pierre-Marie de Rodat

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).