aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@yorick.cygnus.com>1997-09-29 16:08:34 +0000
committerJason Merrill <jason@gcc.gnu.org>1997-09-29 12:08:34 -0400
commit893de33c133017f9559d652f2d287ca00ea37a74 (patch)
tree665b6daaba096fcbf796f5416a03f0217b42d787
parent9b16d2c4efea1287a1651881732e06d7478f6d54 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/cp/cp-tree.h12
-rw-r--r--gcc/cp/decl.c35
-rw-r--r--gcc/cp/decl2.c12
-rw-r--r--gcc/cp/pt.c2
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;