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] Suppress overlap code on assigning aggregate to var with address clause


On targets without the equivalent of memmove (such as for the AAMP target),
the recently added code for handling possible overlaps on array assignments
involving variables with address clauses unnecessarily takes effect when
the right-hand side is an aggregate. This treatment is now suppressed for
this case, generating code on AAMP that is similarly efficient to other
targets.

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

2009-04-20  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch5.adb (Expand_Assign_Array): For the case where the assignment
	involves a target that has a specified address, don't set Forward_OK
	and Backward_OK to False if the rhs is an aggregate, since overlap
	can't occur.

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]