Commit b001a02f by Per Bothner

Remove Feb 28's FUNCTION_NEEDS_STATIC_CHAIN changes.

From-SVN: r9106
parent 874a0744
...@@ -4160,15 +4160,6 @@ expand_expr (exp, target, tmode, modifier) ...@@ -4160,15 +4160,6 @@ expand_expr (exp, target, tmode, modifier)
/* Mark as non-local and addressable. */ /* Mark as non-local and addressable. */
DECL_NONLOCAL (exp) = 1; 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); mark_addressable (exp);
if (GET_CODE (DECL_RTL (exp)) != MEM) if (GET_CODE (DECL_RTL (exp)) != MEM)
abort (); abort ();
...@@ -6199,7 +6190,7 @@ expand_expr (exp, target, tmode, modifier) ...@@ -6199,7 +6190,7 @@ expand_expr (exp, target, tmode, modifier)
/* Are we taking the address of a nested function? */ /* Are we taking the address of a nested function? */
if (TREE_CODE (TREE_OPERAND (exp, 0)) == FUNCTION_DECL 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 = trampoline_address (TREE_OPERAND (exp, 0));
op0 = force_operand (op0, target); op0 = force_operand (op0, target);
......
...@@ -4246,14 +4246,8 @@ rtx ...@@ -4246,14 +4246,8 @@ rtx
lookup_static_chain (decl) lookup_static_chain (decl)
tree decl; tree decl;
{ {
tree context, link; tree context = decl_function_context (decl);
tree 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);
if (context == 0) if (context == 0)
return 0; return 0;
...@@ -4713,7 +4707,7 @@ init_function_start (subr, filename, line) ...@@ -4713,7 +4707,7 @@ init_function_start (subr, filename, line)
/* Nonzero if this is a nested function that uses a static chain. */ /* Nonzero if this is a nested function that uses a static chain. */
current_function_needs_context 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. */ /* Set if a call to setjmp is seen. */
current_function_calls_setjmp = 0; current_function_calls_setjmp = 0;
......
...@@ -1969,7 +1969,7 @@ staticp (arg) ...@@ -1969,7 +1969,7 @@ staticp (arg)
case FUNCTION_DECL: case FUNCTION_DECL:
/* Nested functions aren't static, since taking their address /* Nested functions aren't static, since taking their address
involves a trampoline. */ involves a trampoline. */
return ! FUNCTION_NEEDS_STATIC_CHAIN (arg); return decl_function_context (arg) == 0;
case VAR_DECL: case VAR_DECL:
return TREE_STATIC (arg) || DECL_EXTERNAL (arg); return TREE_STATIC (arg) || DECL_EXTERNAL (arg);
......
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