This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Ada] Use of attribute 'Loop_Entry in various contexts


This patch reimplements the expansion of attribute 'Loop_Entry. Instead of
performing the attribute and related loop transformation post-order, the same
actions are now carried out in-order. This allows for the proper type of the
constant to be propagated to the related context of the attribute.

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

2013-04-24  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb: Remove Loop_Entry_Attributes from the usage of
	nodes. Flag 260 is now used.
	(Has_Loop_Entry_Attributes): New routine.
	(Loop_Entry_Attributes): Removed.
	(Set_Has_Loop_Entry_Attributes): New routine.
	(Set_Loop_Entry_Attributes): Removed.
	(Write_Entity_Flags): Write out Flag 260.
	(Write_Field10_Name): Remove the output for Loop_Entry_Attributes.
	* einfo.ads: Remove attribute Loop_Entry_Attributes,
	its related comment and uses in nodes.	Add new attribute
	Has_Loop_Entry_Attributes, related comment and uses in loop nodes.
	(Has_Loop_Entry_Attributes): New routine and pragma Inline.
	(Loop_Entry_Attributes): Removed along with pragma Inline.
	(Set_Has_Loop_Entry_Attributes): New routine and pragma Inline.
	(Set_Loop_Entry_Attributes): Removed along with pragma Inline.
	* exp_attr.adb (Expand_Loop_Entry_Attribute): New routine.
	(Expand_N_Attribute_Reference): Expand attribute 'Loop_Entry.
	* exp_ch5.adb: Remove with and use clause for Elists.
	(Expand_Loop_Entry_Attributes): Removed.
	(Expand_N_Loop_Statement): Add local variable Stmt. Rename local
	constant Isc to Scheme. When a loop is subject to attribute
	'Loop_Entry, retrieve the nested loop from the conditional
	block. Move the processing of controlled object at the end of
	loop expansion.
	* sem_attr.adb (Analyze_Attribute): Do not chain attribute
	'Loop_Entry to its related loop.
	* sem_ch5.adb (Analyze_Loop_Statement): Add local variable
	Stmt. When the iteration scheme mentions attribute 'Loop_Entry,
	the entire loop is rewritten into a block.  Retrieve the nested
	loop in such cases to complete the analysis.
	* sem_util.ads, sem_util.adb (Find_Loop_In_Conditional_Block): New
	routine.
	(Subject_To_Loop_Entry_Attributes): New routine.

Attachment: difs
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]