Commit ee534ebf by Richard Stallman

(grokdeclarator): Don't mark file-scope register variables as TREE_PUBLIC.

From-SVN: r1379
parent b2215d83
...@@ -4107,11 +4107,15 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) ...@@ -4107,11 +4107,15 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
/* An uninitialized decl with `extern' is a reference. */ /* An uninitialized decl with `extern' is a reference. */
TREE_EXTERNAL (decl) TREE_EXTERNAL (decl)
= !initialized && (specbits & (1 << (int) RID_EXTERN)); = !initialized && (specbits & (1 << (int) RID_EXTERN));
/* At top level, either `static' or no s.c. makes a definition /* At top level, the presence of a `static' or `register' storage
(perhaps tentative), and absence of `static' makes it public. */ class specifier, or the absence of all storage class specifiers
makes this declaration a definition (perhaps tentative). Also,
the absence of both `static' and `register' makes it public. */
if (current_binding_level == global_binding_level) if (current_binding_level == global_binding_level)
{ {
TREE_PUBLIC (decl) = !(specbits & (1 << (int) RID_STATIC)); TREE_PUBLIC (decl)
= !(specbits
& ((1 << (int) RID_STATIC) | (1 << (int) RID_REGISTER)));
TREE_STATIC (decl) = ! TREE_EXTERNAL (decl); TREE_STATIC (decl) = ! TREE_EXTERNAL (decl);
} }
/* Not at top level, only `static' makes a static definition. */ /* Not at top level, only `static' makes a static definition. */
......
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