diff options
author | Per Bothner <bothner@gcc.gnu.org> | 1995-03-01 19:33:25 -0800 |
---|---|---|
committer | Per Bothner <bothner@gcc.gnu.org> | 1995-03-01 19:33:25 -0800 |
commit | b001a02f29a98c6363df45d523f21378e0c1e516 (patch) | |
tree | c4ea5bd9a29aec280cee77ce92d3c59232276d6a /gcc | |
parent | 874a07447a882ce3de66a718c9f945767ae06dd1 (diff) | |
download | gcc-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.c | 11 | ||||
-rw-r--r-- | gcc/function.c | 14 | ||||
-rw-r--r-- | gcc/tree.c | 2 |
3 files changed, 6 insertions, 21 deletions
@@ -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; @@ -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); |