Commit 014caddb by Eric Botcazou Committed by Arnaud Charlet

exp_ch5.adb (Expand_Assign_Array): For the GCC back-end, do not generate an…

exp_ch5.adb (Expand_Assign_Array): For the GCC back-end, do not generate an assignment loop in case of overlap.

2009-04-16  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch5.adb (Expand_Assign_Array): For the GCC back-end, do not
	generate an assignment loop in case of overlap.

From-SVN: r146150
parent b2ed7a03
2009-04-16 Eric Botcazou <ebotcazou@adacore.com>
* exp_ch5.adb (Expand_Assign_Array): For the GCC back-end, do not
generate an assignment loop in case of overlap.
2009-04-16 Olivier Hainque <hainque@adacore.com>
* gnat_ugn.texi (gnatmem description): Make it explicit that
......@@ -634,16 +634,21 @@ package body Exp_Ch5 is
end if;
end if;
-- If after that analysis, Forwards_OK is still True, and
-- Loop_Required is False, meaning that we have not discovered some
-- non-overlap reason for requiring a loop, then we can still let
-- gigi handle it.
-- If after that analysis Loop_Required is False, meaning that we
-- have not discovered some non-overlap reason for requiring a loop,
-- then the outcome depends on the capabilities of the back end.
if not Loop_Required then
-- Assume gigi can handle it if Forwards_OK is set
-- The GCC back end can deal with all cases of overlap by falling
-- back to memmove if it cannot use a more efficient approach.
if Forwards_OK (N) then
if VM_Target = No_VM and not AAMP_On_Target then
return;
-- Assume other back ends can handle it if Forwards_OK is set
elsif Forwards_OK (N) then
return;
-- If Forwards_OK is not set, the back end will need something
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment