diff options
author | Jason Merrill <jason@yorick.cygnus.com> | 1997-09-29 16:08:34 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1997-09-29 12:08:34 -0400 |
commit | 893de33c133017f9559d652f2d287ca00ea37a74 (patch) | |
tree | 665b6daaba096fcbf796f5416a03f0217b42d787 | |
parent | 9b16d2c4efea1287a1651881732e06d7478f6d54 (diff) | |
download | gcc-893de33c133017f9559d652f2d287ca00ea37a74.zip gcc-893de33c133017f9559d652f2d287ca00ea37a74.tar.gz gcc-893de33c133017f9559d652f2d287ca00ea37a74.tar.bz2 |
cp-tree.h, [...]: Lose DECL_C_STATIC and DECL_PUBLIC.
* cp-tree.h, decl.c, decl2.c, pt.c:
Lose DECL_C_STATIC and DECL_PUBLIC. Don't pretend statics are public.
* decl2.c (lang_decode_option): Add missing ;.
From-SVN: r15789
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/cp-tree.h | 12 | ||||
-rw-r--r-- | gcc/cp/decl.c | 35 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 12 | ||||
-rw-r--r-- | gcc/cp/pt.c | 2 |
5 files changed, 22 insertions, 46 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 89e9808..e7da2dd 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +Mon Sep 29 08:57:53 1997 Jason Merrill <jason@yorick.cygnus.com> + + * cp-tree.h, decl.c, decl2.c, pt.c: + Lose DECL_C_STATIC and DECL_PUBLIC. Don't pretend statics are public. + + * decl2.c (lang_decode_option): Add missing ;. + Sat Sep 27 16:22:48 1997 Jason Merrill <jason@yorick.cygnus.com> * friend.c (do_friend): Disable injection for all template-derived diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index a44447a..8d1ccfc 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -936,11 +936,10 @@ struct lang_decl_flags unsigned saved_inline : 1; unsigned use_template : 2; - unsigned c_static : 1; unsigned nonconverting : 1; unsigned declared_inline : 1; unsigned not_really_extern : 1; - unsigned dummy : 4; + unsigned dummy : 5; tree access; tree context; @@ -1402,11 +1401,6 @@ extern int flag_new_for_scope; /* We know what we're doing with this decl now. */ #define DECL_INTERFACE_KNOWN(NODE) DECL_LANG_FLAG_5 (NODE) -/* This decl was declared or deduced to have internal linkage. This is - only meaningful if TREE_PUBLIC is set. */ -#define DECL_C_STATIC(NODE) \ - (DECL_LANG_SPECIFIC (NODE)->decl_flags.c_static) - /* This function was declared inline. This flag controls the linkage semantics of 'inline'; whether or not the function is inlined is controlled by DECL_INLINE. */ @@ -1422,10 +1416,6 @@ extern int flag_new_for_scope; #define DECL_REALLY_EXTERN(NODE) \ (DECL_EXTERNAL (NODE) && ! DECL_NOT_REALLY_EXTERN (NODE)) -#define DECL_PUBLIC(NODE) \ - (TREE_CODE (NODE) == FUNCTION_DECL \ - ? ! DECL_C_STATIC (NODE) : TREE_PUBLIC (NODE)) - #define THUNK_DELTA(DECL) ((DECL)->decl.frame_size.i) /* ...and for unexpanded-parameterized-type nodes. */ diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 71c2dbf..4039818 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -2460,7 +2460,7 @@ duplicate_decls (newdecl, olddecl) /* If you declare a built-in or predefined function name as static, the old definition is overridden, but optionally warn this was a bad choice of name. Ditto for overloads. */ - if (! DECL_PUBLIC (newdecl) + if (! TREE_PUBLIC (newdecl) || (TREE_CODE (newdecl) == FUNCTION_DECL && DECL_LANGUAGE (newdecl) != DECL_LANGUAGE (olddecl))) { @@ -2848,9 +2848,6 @@ duplicate_decls (newdecl, olddecl) if (! DECL_EXTERNAL (olddecl)) DECL_EXTERNAL (newdecl) = 0; - if (TREE_CODE (newdecl) == FUNCTION_DECL) - DECL_C_STATIC (newdecl) |= DECL_C_STATIC (olddecl); - if (DECL_LANG_SPECIFIC (newdecl)) { DECL_INTERFACE_KNOWN (newdecl) |= DECL_INTERFACE_KNOWN (olddecl); @@ -3214,7 +3211,7 @@ pushdecl (x) /* If the first global decl has external linkage, warn if we later see static one. */ - if (IDENTIFIER_GLOBAL_VALUE (name) == NULL_TREE && DECL_PUBLIC (x)) + if (IDENTIFIER_GLOBAL_VALUE (name) == NULL_TREE && TREE_PUBLIC (x)) TREE_PUBLIC (name) = 1; /* Don't install an artificial TYPE_DECL if we already have @@ -6640,7 +6637,7 @@ cp_finish_decl (decl, init, asmspec_tree, need_pop, flags) && current_function_decl && DECL_CONTEXT (decl) == current_function_decl && DECL_THIS_INLINE (current_function_decl) - && DECL_PUBLIC (current_function_decl)) + && TREE_PUBLIC (current_function_decl)) { if (DECL_INTERFACE_KNOWN (current_function_decl)) { @@ -7218,7 +7215,7 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals, decl = build_lang_decl (FUNCTION_DECL, declarator, type); /* propagate volatile out from type to decl */ if (TYPE_VOLATILE (type)) - TREE_THIS_VOLATILE (decl) = 1; + TREE_THIS_VOLATILE (decl) = 1; /* Should probably propagate const out from type to decl I bet (mrs). */ if (staticp) @@ -7230,10 +7227,6 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals, if (ctype) DECL_CLASS_CONTEXT (decl) = ctype; - /* All function decls start out public; we'll fix their linkage later (at - definition or EOF) if appropriate. */ - TREE_PUBLIC (decl) = 1; - if (ctype == NULL_TREE && ! strcmp (IDENTIFIER_POINTER (declarator), "main")) { if (inlinep) @@ -7244,8 +7237,12 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals, publicp = 1; } + TREE_PUBLIC (decl) = publicp; if (! publicp) - DECL_C_STATIC (decl) = 1; + { + DECL_INTERFACE_KNOWN (decl) = 1; + DECL_NOT_REALLY_EXTERN (decl) = 1; + } if (inlinep) DECL_THIS_INLINE (decl) = DECL_INLINE (decl) = 1; @@ -7262,7 +7259,7 @@ grokfndecl (ctype, type, declarator, orig_declarator, virtualp, flags, quals, grok_op_properties (decl, virtualp, check < 0); if (ctype && hack_decl_function_context (decl)) - DECL_NO_STATIC_CHAIN (decl) = 1; + DECL_NO_STATIC_CHAIN (decl) = 1; for (t = TYPE_ARG_TYPES (TREE_TYPE (decl)); t; t = TREE_CHAIN (t)) if (TREE_PURPOSE (t) @@ -11425,11 +11422,7 @@ start_function (declspecs, declarator, attrs, pre_parsed_p) = (interface_only || (DECL_THIS_INLINE (decl1) && ! flag_implement_inlines)); else - { - DECL_EXTERNAL (decl1) = 0; - if (DECL_C_STATIC (decl1)) - TREE_PUBLIC (decl1) = 0; - } + DECL_EXTERNAL (decl1) = 0; DECL_NOT_REALLY_EXTERN (decl1) = 0; DECL_INTERFACE_KNOWN (decl1) = 1; } @@ -11445,11 +11438,7 @@ start_function (declspecs, declarator, attrs, pre_parsed_p) && ! hack_decl_function_context (decl1)) DECL_DEFER_OUTPUT (decl1) = 1; else - { - DECL_INTERFACE_KNOWN (decl1) = 1; - if (DECL_C_STATIC (decl1)) - TREE_PUBLIC (decl1) = 0; - } + DECL_INTERFACE_KNOWN (decl1) = 1; } if (ctype != NULL_TREE && DECL_STATIC_FUNCTION_P (decl1)) diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 5b40e27..9125783 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -575,7 +575,7 @@ lang_decode_option (p) } } name_mangling_version = atoi (p + 22); - mangling_version_lose: + mangling_version_lose: ; } else for (j = 0; !found && j < sizeof (lang_f_options) / sizeof (lang_f_options[0]); @@ -2806,8 +2806,6 @@ import_export_decl (decl) else comdat_linkage (decl); } - else if (DECL_C_STATIC (decl)) - TREE_PUBLIC (decl) = 0; else comdat_linkage (decl); @@ -3284,14 +3282,6 @@ finish_file () walk_vtables ((void (*) PROTO((tree, tree))) 0, prune_vtable_vardecl); - for (vars = getdecls (); vars; vars = TREE_CHAIN (vars)) - { - if (TREE_CODE (vars) == FUNCTION_DECL - && ! DECL_INTERFACE_KNOWN (vars) - && DECL_C_STATIC (vars)) - TREE_PUBLIC (vars) = 0; - } - if (write_virtuals == 2) { /* Now complain about an virtual function tables promised diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 7ac69c2..3f6a578 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -1115,7 +1115,7 @@ coerce_template_parms (parms, arglist, in_decl) else if (TREE_CODE (a) != VAR_DECL && TREE_CODE (a) != FUNCTION_DECL) goto bad; - else if (! DECL_PUBLIC (a)) + else if (! TREE_PUBLIC (a)) { cp_error ("address of non-extern `%E' cannot be used as template argument", a); val = error_mark_node; |