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] Attribute Loop_Entry and index check generation


This patch delays the generation of index checks for the following cases of
Loop_Entry attribute references:

   Prefix'Loop_Entry (Expr)
   Prefix'Loop_Entry (Expr1, Expr2, ... ExprN)

Even though these constructs appear initially as attribute references, analysis
converts them into indexed components to reflect their true semantics. Without
this patch, expansion of the indexed components would generate index checks of
the following form

   [constraint_error when not
     (blah in a'loop_entry'first .. a'loop_entry'last) "index check failed"]

and the back end would subsequently fail because it cannot process Loop_Entry.

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

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

	* checks.adb (Generate_Index_Checks): Delay the generation of
	the check for an indexed component where the prefix mentions
	Loop_Entry until the attribute has been properly expanded.
	* exp_ch5.adb (Expand_Loop_Entry_Attributes): Perform minor
	decoration of the constant that captures the value of Loop_Entry's
	prefix at the entry point into a loop.	Generate index checks
	for an attribute reference that has been transformed into an
	indexed component.

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]