Commit 27ad9660 by Ed Schonberg Committed by Arnaud Charlet

exp_ch6.adb (Expand_N_Function_Call): If stack checking is enabled...

2004-10-04  Ed Schonberg  <schonberg@gnat.com>

	* exp_ch6.adb (Expand_N_Function_Call): If stack checking is enabled,
	do not generate a declaration for a temporary if the call is part of a
	library-level instantiation.

From-SVN: r88495
parent 1c6c6771
2004-10-04 Ed Schonberg <schonberg@gnat.com>
* exp_ch6.adb (Expand_N_Function_Call): If stack checking is enabled,
do not generate a declaration for a temporary if the call is part of a
library-level instantiation.
2004-10-04 Ed Schonberg <schonberg@gnat.com>
* sem_util.adb (Explain_Limited_Type): Ignore internal components when
searching for a limited component to flag.
......
......@@ -2934,6 +2934,12 @@ package body Exp_Ch6 is
-- this because otherwise gigi may generate a large temporary on the
-- fly and this can cause trouble with stack checking.
-- This is unecessary if the call is the expression in an object
-- declaration, or if it appears outside of any library unit. This
-- can only happen if it appears as an actual in a library-level
-- instance, in which case a temporary will be generated for it once
-- the instance itself is installed.
if May_Generate_Large_Temp (Typ)
and then Nkind (Parent (N)) /= N_Assignment_Statement
and then
......@@ -2943,6 +2949,7 @@ package body Exp_Ch6 is
(Nkind (Parent (N)) /= N_Object_Declaration
or else Expression (Parent (N)) /= N)
and then not Returned_By_Reference
and then Current_Scope /= Standard_Standard
then
if Stack_Checking_Enabled then
......
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