diff options
author | Richard Stallman <rms@gnu.org> | 1992-07-01 21:40:06 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-07-01 21:40:06 +0000 |
commit | ee534ebfe9ae15ec54a5ff1c5081c8c261c06a51 (patch) | |
tree | 9308ce1b4d25d13a708b6df27385b291d238f343 | |
parent | b2215d835ced9bbc77a4299bb0bc43f7200676b0 (diff) | |
download | gcc-ee534ebfe9ae15ec54a5ff1c5081c8c261c06a51.zip gcc-ee534ebfe9ae15ec54a5ff1c5081c8c261c06a51.tar.gz gcc-ee534ebfe9ae15ec54a5ff1c5081c8c261c06a51.tar.bz2 |
(grokdeclarator): Don't mark file-scope register variables as TREE_PUBLIC.
From-SVN: r1379
-rw-r--r-- | gcc/c-decl.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 4cd33a0..ac79c3c 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -4107,11 +4107,15 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) /* An uninitialized decl with `extern' is a reference. */ TREE_EXTERNAL (decl) = !initialized && (specbits & (1 << (int) RID_EXTERN)); - /* At top level, either `static' or no s.c. makes a definition - (perhaps tentative), and absence of `static' makes it public. */ + /* At top level, the presence of a `static' or `register' storage + 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) { - 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); } /* Not at top level, only `static' makes a static definition. */ |