Commit 0500d6f9 by Richard Kenner

(clear_limbo_values): New function.

(pushdecl): Call it for function body blocks.

From-SVN: r11828
parent f12d26af
...@@ -902,6 +902,22 @@ pushlevel (tag_transparent) ...@@ -902,6 +902,22 @@ pushlevel (tag_transparent)
keep_next_if_subblocks = 0; keep_next_if_subblocks = 0;
} }
/* Clear the limbo values of all identifiers defined in BLOCK or a subblock. */
static void
clear_limbo_values (block)
tree block;
{
tree tem;
for (tem = BLOCK_VARS (block); tem; tem = TREE_CHAIN (tem))
if (DECL_NAME (tem) != 0)
IDENTIFIER_LIMBO_VALUE (DECL_NAME (tem)) = 0;
for (tem = BLOCK_SUBBLOCKS (block); tem; tem = TREE_CHAIN (tem))
clear_limbo_values (tem);
}
/* Exit a binding level. /* Exit a binding level.
Pop the level off, and restore the state of the identifier-decl mappings Pop the level off, and restore the state of the identifier-decl mappings
that were in effect when this level was entered. that were in effect when this level was entered.
...@@ -1055,6 +1071,8 @@ poplevel (keep, reverse, functionbody) ...@@ -1055,6 +1071,8 @@ poplevel (keep, reverse, functionbody)
if (functionbody) if (functionbody)
{ {
clear_limbo_values (block);
/* If this is the top level block of a function, /* If this is the top level block of a function,
the vars are the function's parameters. the vars are the function's parameters.
Don't leave them in the BLOCK because they are Don't leave them in the BLOCK because they are
......
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