diff options
| -rw-r--r-- | gcc/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/tree.c | 9 |
2 files changed, 10 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e8208f5..5511a4b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-11-03 Andrew Pinski <pinskia@physics.uc.edu> + + PR tree-opt/18231 + * tree.c (staticp) <case FUNCTION_DECL>: Nested functions are static + also. + 2004-11-03 Andrew MacLeod <amacleod@redhat.com> PR tree-optimization/18270 @@ -1573,11 +1573,10 @@ staticp (tree arg) switch (TREE_CODE (arg)) { case FUNCTION_DECL: - /* Nested functions aren't static, since taking their address - involves a trampoline. */ - return ((decl_function_context (arg) == 0 || DECL_NO_STATIC_CHAIN (arg)) - && ! DECL_NON_ADDR_CONST_P (arg) - ? arg : NULL); + /* Nested functions are static, even though taking their address will + involve a trampoline as we unnest the nested function and create + the trampoline on the tree level. */ + return arg; case VAR_DECL: return ((TREE_STATIC (arg) || DECL_EXTERNAL (arg)) |
