diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-09-26 10:42:59 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-09-26 10:42:59 +0000 |
commit | 46ed552ee3a3aaa6139e90e3aaefe50397cf108a (patch) | |
tree | 9f6affc91257fbbff74071b18fe45d81fa90834e /gcc/ada | |
parent | fdd18a7c94f4cbb499dafb7a1a1467fe861d55d9 (diff) | |
download | gcc-46ed552ee3a3aaa6139e90e3aaefe50397cf108a.tar.gz |
2007-09-26 Robert Dewar <dewar@adacore.com>
* exp_ch5.adb: Activate memmove type processing if debug flag d.s is set
* debug.adb: Add d.s flag.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128787 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/debug.adb | 7 | ||||
-rw-r--r-- | gcc/ada/exp_ch5.adb | 15 |
2 files changed, 17 insertions, 5 deletions
diff --git a/gcc/ada/debug.adb b/gcc/ada/debug.adb index 8b3ff397301..363cc07907c 100644 --- a/gcc/ada/debug.adb +++ b/gcc/ada/debug.adb @@ -111,7 +111,7 @@ package body Debug is -- d.p -- d.q -- d.r - -- d.s + -- d.s Disable expansion of slice move, use memmove -- d.t Disable static allocation of library level dispatch tables -- d.u -- d.v @@ -514,6 +514,11 @@ package body Debug is -- main source (this corresponds to a previous behavior of -gnatl and -- is used for running the ACATS tests). + -- d.s Normally the compiler expands slice moves into loops if overlap + -- might be possible. This debug flag inhibits that expansion, and + -- the back end is expected to use an appropriate routine to handle + -- overlap, based on Forward_OK and Backwards_OK flags. + -- d.t The compiler has been modified (a fairly extensive modification) -- to generate static dispatch tables for library level tagged types. -- This debug switch disables this modification and reverts to the diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb index c68a12a7463..4de10742ca6 100644 --- a/gcc/ada/exp_ch5.adb +++ b/gcc/ada/exp_ch5.adb @@ -387,7 +387,7 @@ package body Exp_Ch5 is -- File.Storage := Contents; -- end Write_All; - -- We expand to a loop in either of these two cases. + -- We expand to a loop in either of these two cases -- Question for future thought. Another potentially more efficient -- approach would be to create the actual subtype, and then do an @@ -636,11 +636,18 @@ package body Exp_Ch5 is -- gigi handle it. if not Loop_Required then + + -- Assume gigi can handle it if Forwards_OK is set + if Forwards_OK (N) then return; - else - null; - -- Here is where a memmove would be appropriate ??? + + -- If Forwards_OK is not set, the back end will need something + -- like memmove to handle the move. For now, this processing is + -- activated using the .s debug flag (-gnatd.s). + + elsif Debug_Flag_Dot_S then + return; end if; end if; |