diff options
author | Robert Dewar <dewar@adacore.com> | 2007-04-06 11:14:20 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2007-04-06 11:14:20 +0200 |
commit | 0903be2332da6455ed3c8d08836c9e27ac68a1a4 (patch) | |
tree | 1c0ad1eed890b3c6af73e898c81fb0660ea5bafa /gcc/ada/targparm.ads | |
parent | d90e94c7f76e9dcff8f225e3b86ce61e4124a422 (diff) | |
download | gcc-0903be2332da6455ed3c8d08836c9e27ac68a1a4.zip gcc-0903be2332da6455ed3c8d08836c9e27ac68a1a4.tar.gz gcc-0903be2332da6455ed3c8d08836c9e27ac68a1a4.tar.bz2 |
system-linux-ia64.ads, [...] (Functions_Return_By_DSP_On_Target): Removed
2007-04-06 Robert Dewar <dewar@adacore.com>
* system-linux-ia64.ads, system-freebsd-x86.ads, system-lynxos-ppc.ads,
system-lynxos-x86.ads, system-linux-x86_64.ads, system-tru64.ads,
system-vxworks-sparcv9.ads, system-solaris-x86.ads, system-irix-o32.ads,
system-irix-n32.ads, system-hpux.ads, system-vxworks-m68k.ads,
system-linux-x86.ads, system-vxworks-mips.ads, system-interix.ads,
system-solaris-sparc.ads, system-solaris-sparcv9.ads, system-vms.ads,
system-mingw.ads, system-vms-zcx.ads, system-vxworks-ppc.ads,
system-vxworks-alpha.ads, system-vms_64.ads, system-darwin-ppc.ads,
system-vxworks-x86.ads, system-linux-ppc.ads, system-linux-hppa.ads,
system-hpux-ia64.ads, targparm.adb,
targparm.ads (Functions_Return_By_DSP_On_Target): Removed
* system.ads: Move Functions_Return_By_DSP to obsolete section,
kept for bootstrap purposes only.
From-SVN: r123539
Diffstat (limited to 'gcc/ada/targparm.ads')
-rw-r--r-- | gcc/ada/targparm.ads | 40 |
1 files changed, 0 insertions, 40 deletions
diff --git a/gcc/ada/targparm.ads b/gcc/ada/targparm.ads index f7406e8..465e6b7 100644 --- a/gcc/ada/targparm.ads +++ b/gcc/ada/targparm.ads @@ -553,46 +553,6 @@ package Targparm is -- 2 ** (-(T'Object_Size - 1)) and whose values have an absolute -- value less than 1.0. - -------------------------------------------------------------- - -- Handling of Unconstrained Values Returned from Functions -- - -------------------------------------------------------------- - - -- Functions that return variable length objects, notably unconstrained - -- arrays are a special case, because there is no simple obvious way of - -- implementing this feature. Furthermore, this capability is not present - -- in C++ or C, so typically the system ABI does not handle this case. - - -- GNAT uses two different approaches - - -- The Secondary Stack - - -- The secondary stack is a special storage pool that is used for - -- this purpose. The called function places the result on the - -- secondary stack, and the caller uses or copies the value from - -- the secondary stack, and pops the secondary stack after the - -- value is consumed. The secondary stack is outside the system - -- ABI, and the important point is that although generally it is - -- handled in a stack like manner corresponding to the subprogram - -- call structure, a return from a function does NOT pop the stack. - - -- DSP (Depressed Stack Pointer) - - -- Some targets permit the implementation of a function call/return - -- protocol in which the function does not pop the main stack pointer - -- on return, but rather returns with the stack pointer depressed. - -- This is not generally permitted by any ABI, but for at least some - -- targets, the implementation of alloca provides a model for this - -- approach. If return-with-DSP is implemented, then functions that - -- return variable length objects do it by returning with the stack - -- pointer depressed, and the returned object is a pointer to the - -- area within the stack frame of the called procedure that contains - -- the returned value. The caller must then pop the main stack when - -- this value is consumed. - - Functions_Return_By_DSP_On_Target : Boolean := False; - -- Set to True if target permits functions to return with using the - -- DSP (depressed stack pointer) approach. - ----------------- -- Data Layout -- ----------------- |