aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPer Bothner <bothner@gcc.gnu.org>1995-03-01 19:33:25 -0800
committerPer Bothner <bothner@gcc.gnu.org>1995-03-01 19:33:25 -0800
commitb001a02f29a98c6363df45d523f21378e0c1e516 (patch)
treec4ea5bd9a29aec280cee77ce92d3c59232276d6a /gcc
parent874a07447a882ce3de66a718c9f945767ae06dd1 (diff)
downloadgcc-b001a02f29a98c6363df45d523f21378e0c1e516.zip
gcc-b001a02f29a98c6363df45d523f21378e0c1e516.tar.gz
gcc-b001a02f29a98c6363df45d523f21378e0c1e516.tar.bz2
Remove Feb 28's FUNCTION_NEEDS_STATIC_CHAIN changes.
From-SVN: r9106
Diffstat (limited to 'gcc')
-rw-r--r--gcc/expr.c11
-rw-r--r--gcc/function.c14
-rw-r--r--gcc/tree.c2
3 files changed, 6 insertions, 21 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 1ee0480..f72102f 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -4160,15 +4160,6 @@ expand_expr (exp, target, tmode, modifier)
/* Mark as non-local and addressable. */
DECL_NONLOCAL (exp) = 1;
-
- /* This is currently too late to be useful, since
- init_function_start needs to know whether a static chain
- is needed. However, it would be a useful optimization
- if we could defer setting up static chains and trampolines
- until we see that we actually need them due to references
- to non-local non-static variables. */
- FUNCTION_NEEDS_STATIC_CHAIN (current_function_decl) = 1;
-
mark_addressable (exp);
if (GET_CODE (DECL_RTL (exp)) != MEM)
abort ();
@@ -6199,7 +6190,7 @@ expand_expr (exp, target, tmode, modifier)
/* Are we taking the address of a nested function? */
if (TREE_CODE (TREE_OPERAND (exp, 0)) == FUNCTION_DECL
- && FUNCTION_NEEDS_STATIC_CHAIN (TREE_OPERAND (exp, 0)))
+ && decl_function_context (TREE_OPERAND (exp, 0)) != 0)
{
op0 = trampoline_address (TREE_OPERAND (exp, 0));
op0 = force_operand (op0, target);
diff --git a/gcc/function.c b/gcc/function.c
index edd2bed..4ee042b 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -4246,18 +4246,12 @@ rtx
lookup_static_chain (decl)
tree decl;
{
- tree context, link;
-
- if (TREE_CODE (decl) == FUNCTION_DECL
- ? ! FUNCTION_NEEDS_STATIC_CHAIN (decl)
- : ! FUNCTION_NEEDS_STATIC_CHAIN (current_function_decl))
- return 0;
-
- context = decl_function_context (decl);
+ tree context = decl_function_context (decl);
+ tree link;
if (context == 0)
return 0;
-
+
/* We treat inline_function_decl as an alias for the current function
because that is the inline function whose vars, types, etc.
are being merged into the current function.
@@ -4713,7 +4707,7 @@ init_function_start (subr, filename, line)
/* Nonzero if this is a nested function that uses a static chain. */
current_function_needs_context
- = FUNCTION_NEEDS_STATIC_CHAIN (current_function_decl);
+ = (decl_function_context (current_function_decl) != 0);
/* Set if a call to setjmp is seen. */
current_function_calls_setjmp = 0;
diff --git a/gcc/tree.c b/gcc/tree.c
index ff229ac..cdbba0c 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -1969,7 +1969,7 @@ staticp (arg)
case FUNCTION_DECL:
/* Nested functions aren't static, since taking their address
involves a trampoline. */
- return ! FUNCTION_NEEDS_STATIC_CHAIN (arg);
+ return decl_function_context (arg) == 0;
case VAR_DECL:
return TREE_STATIC (arg) || DECL_EXTERNAL (arg);