From 0903be2332da6455ed3c8d08836c9e27ac68a1a4 Mon Sep 17 00:00:00 2001 From: Robert Dewar Date: Fri, 6 Apr 2007 11:14:20 +0200 Subject: [PATCH] system-linux-ia64.ads, [...] (Functions_Return_By_DSP_On_Target): Removed 2007-04-06 Robert Dewar * 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 --- gcc/ada/system-darwin-ppc.ads | 1 - gcc/ada/system-freebsd-x86.ads | 1 - gcc/ada/system-hpux-ia64.ads | 3 +-- gcc/ada/system-hpux.ads | 1 - gcc/ada/system-interix.ads | 1 - gcc/ada/system-irix-n32.ads | 1 - gcc/ada/system-irix-o32.ads | 1 - gcc/ada/system-linux-hppa.ads | 1 - gcc/ada/system-linux-ia64.ads | 1 - gcc/ada/system-linux-ppc.ads | 1 - gcc/ada/system-linux-x86.ads | 1 - gcc/ada/system-linux-x86_64.ads | 1 - gcc/ada/system-lynxos-ppc.ads | 1 - gcc/ada/system-lynxos-x86.ads | 1 - gcc/ada/system-mingw.ads | 1 - gcc/ada/system-solaris-sparc.ads | 1 - gcc/ada/system-solaris-sparcv9.ads | 1 - gcc/ada/system-solaris-x86.ads | 1 - gcc/ada/system-tru64.ads | 1 - gcc/ada/system-vms-zcx.ads | 1 - gcc/ada/system-vms.ads | 1 - gcc/ada/system-vms_64.ads | 1 - gcc/ada/system-vxworks-alpha.ads | 1 - gcc/ada/system-vxworks-m68k.ads | 1 - gcc/ada/system-vxworks-mips.ads | 1 - gcc/ada/system-vxworks-ppc.ads | 1 - gcc/ada/system-vxworks-sparcv9.ads | 1 - gcc/ada/system-vxworks-x86.ads | 1 - gcc/ada/system.ads | 2 +- gcc/ada/targparm.adb | 4 --- gcc/ada/targparm.ads | 40 ------------------------------ 31 files changed, 2 insertions(+), 74 deletions(-) diff --git a/gcc/ada/system-darwin-ppc.ads b/gcc/ada/system-darwin-ppc.ads index a6de518c8af..7c2151b2755 100644 --- a/gcc/ada/system-darwin-ppc.ads +++ b/gcc/ada/system-darwin-ppc.ads @@ -153,7 +153,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-freebsd-x86.ads b/gcc/ada/system-freebsd-x86.ads index a92458067e3..a4c3137da55 100644 --- a/gcc/ada/system-freebsd-x86.ads +++ b/gcc/ada/system-freebsd-x86.ads @@ -127,7 +127,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-hpux-ia64.ads b/gcc/ada/system-hpux-ia64.ads index 5cdd0007248..48d5c86ea15 100644 --- a/gcc/ada/system-hpux-ia64.ads +++ b/gcc/ada/system-hpux-ia64.ads @@ -127,14 +127,13 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; Preallocated_Stacks : constant Boolean := False; Signed_Zeros : constant Boolean := True; Stack_Check_Default : constant Boolean := False; - Stack_Check_Probes : constant Boolean := False; + Stack_Check_Probes : constant Boolean := True; Support_64_Bit_Divides : constant Boolean := True; Support_Aggregates : constant Boolean := True; Support_Composite_Assign : constant Boolean := True; diff --git a/gcc/ada/system-hpux.ads b/gcc/ada/system-hpux.ads index 34688860acd..6a60624e9e9 100644 --- a/gcc/ada/system-hpux.ads +++ b/gcc/ada/system-hpux.ads @@ -127,7 +127,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-interix.ads b/gcc/ada/system-interix.ads index b60736b4bfa..8e579ae390a 100644 --- a/gcc/ada/system-interix.ads +++ b/gcc/ada/system-interix.ads @@ -127,7 +127,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-irix-n32.ads b/gcc/ada/system-irix-n32.ads index 77ab89a4c90..0a45ef45118 100644 --- a/gcc/ada/system-irix-n32.ads +++ b/gcc/ada/system-irix-n32.ads @@ -139,7 +139,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-irix-o32.ads b/gcc/ada/system-irix-o32.ads index 83db77d58f2..5f77622f3a6 100644 --- a/gcc/ada/system-irix-o32.ads +++ b/gcc/ada/system-irix-o32.ads @@ -127,7 +127,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-linux-hppa.ads b/gcc/ada/system-linux-hppa.ads index c22e532765f..21151cc373e 100644 --- a/gcc/ada/system-linux-hppa.ads +++ b/gcc/ada/system-linux-hppa.ads @@ -126,7 +126,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-linux-ia64.ads b/gcc/ada/system-linux-ia64.ads index 105264eb6e2..b306f54ef18 100644 --- a/gcc/ada/system-linux-ia64.ads +++ b/gcc/ada/system-linux-ia64.ads @@ -127,7 +127,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-linux-ppc.ads b/gcc/ada/system-linux-ppc.ads index d33c33555b5..d2c5e19d399 100644 --- a/gcc/ada/system-linux-ppc.ads +++ b/gcc/ada/system-linux-ppc.ads @@ -127,7 +127,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-linux-x86.ads b/gcc/ada/system-linux-x86.ads index 62b5441140f..4ed89de29cb 100644 --- a/gcc/ada/system-linux-x86.ads +++ b/gcc/ada/system-linux-x86.ads @@ -127,7 +127,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-linux-x86_64.ads b/gcc/ada/system-linux-x86_64.ads index c4916eeaf18..6da89d2b15b 100644 --- a/gcc/ada/system-linux-x86_64.ads +++ b/gcc/ada/system-linux-x86_64.ads @@ -127,7 +127,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-lynxos-ppc.ads b/gcc/ada/system-lynxos-ppc.ads index d380eb1568a..34070ec91a7 100644 --- a/gcc/ada/system-lynxos-ppc.ads +++ b/gcc/ada/system-lynxos-ppc.ads @@ -141,7 +141,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-lynxos-x86.ads b/gcc/ada/system-lynxos-x86.ads index 659163e72b0..6bd28caf5b6 100644 --- a/gcc/ada/system-lynxos-x86.ads +++ b/gcc/ada/system-lynxos-x86.ads @@ -141,7 +141,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-mingw.ads b/gcc/ada/system-mingw.ads index fa3991968e2..ee701df07d6 100644 --- a/gcc/ada/system-mingw.ads +++ b/gcc/ada/system-mingw.ads @@ -127,7 +127,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-solaris-sparc.ads b/gcc/ada/system-solaris-sparc.ads index d5d4516a52b..1058bb997ff 100644 --- a/gcc/ada/system-solaris-sparc.ads +++ b/gcc/ada/system-solaris-sparc.ads @@ -127,7 +127,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-solaris-sparcv9.ads b/gcc/ada/system-solaris-sparcv9.ads index 60ec78255c0..75c1acccd3d 100644 --- a/gcc/ada/system-solaris-sparcv9.ads +++ b/gcc/ada/system-solaris-sparcv9.ads @@ -127,7 +127,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-solaris-x86.ads b/gcc/ada/system-solaris-x86.ads index d4c71283fc2..3dd0f6de316 100644 --- a/gcc/ada/system-solaris-x86.ads +++ b/gcc/ada/system-solaris-x86.ads @@ -127,7 +127,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-tru64.ads b/gcc/ada/system-tru64.ads index 4db734c0766..bbd2a96d622 100644 --- a/gcc/ada/system-tru64.ads +++ b/gcc/ada/system-tru64.ads @@ -127,7 +127,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-vms-zcx.ads b/gcc/ada/system-vms-zcx.ads index 8e1c1048d28..e7315207ec5 100644 --- a/gcc/ada/system-vms-zcx.ads +++ b/gcc/ada/system-vms-zcx.ads @@ -127,7 +127,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := True; diff --git a/gcc/ada/system-vms.ads b/gcc/ada/system-vms.ads index e922b321342..72e02ce280b 100644 --- a/gcc/ada/system-vms.ads +++ b/gcc/ada/system-vms.ads @@ -127,7 +127,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := True; diff --git a/gcc/ada/system-vms_64.ads b/gcc/ada/system-vms_64.ads index e91e84223f9..5ea93c75b79 100644 --- a/gcc/ada/system-vms_64.ads +++ b/gcc/ada/system-vms_64.ads @@ -146,7 +146,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := True; diff --git a/gcc/ada/system-vxworks-alpha.ads b/gcc/ada/system-vxworks-alpha.ads index bd9a25f66f8..b555ce2d0a7 100644 --- a/gcc/ada/system-vxworks-alpha.ads +++ b/gcc/ada/system-vxworks-alpha.ads @@ -135,7 +135,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-vxworks-m68k.ads b/gcc/ada/system-vxworks-m68k.ads index 4f906ceffb1..bd864f33e62 100644 --- a/gcc/ada/system-vxworks-m68k.ads +++ b/gcc/ada/system-vxworks-m68k.ads @@ -135,7 +135,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-vxworks-mips.ads b/gcc/ada/system-vxworks-mips.ads index 40fe69a6357..059acd7a443 100644 --- a/gcc/ada/system-vxworks-mips.ads +++ b/gcc/ada/system-vxworks-mips.ads @@ -135,7 +135,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-vxworks-ppc.ads b/gcc/ada/system-vxworks-ppc.ads index 73b81865dfe..6b89e6ba7c9 100644 --- a/gcc/ada/system-vxworks-ppc.ads +++ b/gcc/ada/system-vxworks-ppc.ads @@ -135,7 +135,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-vxworks-sparcv9.ads b/gcc/ada/system-vxworks-sparcv9.ads index e099bbadb7b..70207409afe 100644 --- a/gcc/ada/system-vxworks-sparcv9.ads +++ b/gcc/ada/system-vxworks-sparcv9.ads @@ -137,7 +137,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system-vxworks-x86.ads b/gcc/ada/system-vxworks-x86.ads index 5915b81468f..511212fedf3 100644 --- a/gcc/ada/system-vxworks-x86.ads +++ b/gcc/ada/system-vxworks-x86.ads @@ -135,7 +135,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; diff --git a/gcc/ada/system.ads b/gcc/ada/system.ads index fb4e0da166f..0272a04622f 100644 --- a/gcc/ada/system.ads +++ b/gcc/ada/system.ads @@ -139,7 +139,6 @@ private Exit_Status_Supported : constant Boolean := True; Fractional_Fixed_Ops : constant Boolean := False; Frontend_Layout : constant Boolean := False; - Functions_Return_By_DSP : constant Boolean := False; Machine_Overflows : constant Boolean := False; Machine_Rounds : constant Boolean := True; OpenVMS : constant Boolean := False; @@ -162,5 +161,6 @@ private High_Integrity_Mode : constant Boolean := False; Long_Shifts_Inlined : constant Boolean := True; + Functions_Return_By_DSP : constant Boolean := False; end System; diff --git a/gcc/ada/targparm.adb b/gcc/ada/targparm.adb index 3aa3cc3207e..6f3ffe364e8 100644 --- a/gcc/ada/targparm.adb +++ b/gcc/ada/targparm.adb @@ -48,7 +48,6 @@ package body Targparm is CSV, -- Compiler_System_Version D32, -- Duration_32_Bits DEN, -- Denorm - DSP, -- Functions_Return_By_DSP EXS, -- Exit_Status_Supported FEL, -- Frontend_Layout FFO, -- Fractional_Fixed_Ops @@ -85,7 +84,6 @@ package body Targparm is CSV_Str : aliased constant Source_Buffer := "Compiler_System_Version"; D32_Str : aliased constant Source_Buffer := "Duration_32_Bits"; DEN_Str : aliased constant Source_Buffer := "Denorm"; - DSP_Str : aliased constant Source_Buffer := "Functions_Return_By_DSP"; EXS_Str : aliased constant Source_Buffer := "Exit_Status_Supported"; FEL_Str : aliased constant Source_Buffer := "Frontend_Layout"; FFO_Str : aliased constant Source_Buffer := "Fractional_Fixed_Ops"; @@ -119,7 +117,6 @@ package body Targparm is CSV_Str'Access, D32_Str'Access, DEN_Str'Access, - DSP_Str'Access, EXS_Str'Access, FEL_Str'Access, FFO_Str'Access, @@ -556,7 +553,6 @@ package body Targparm is when CSV => Compiler_System_Version := Result; when D32 => Duration_32_Bits_On_Target := Result; when DEN => Denorm_On_Target := Result; - when DSP => Functions_Return_By_DSP_On_Target := Result; when EXS => Exit_Status_Supported_On_Target := Result; when FEL => Frontend_Layout_On_Target := Result; when FFO => Fractional_Fixed_Ops_On_Target := Result; diff --git a/gcc/ada/targparm.ads b/gcc/ada/targparm.ads index f7406e8c352..465e6b7e098 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 -- ----------------- -- 2.30.2