106 lines
3.8 KiB
Text
106 lines
3.8 KiB
Text
$NetBSD: patch-ab,v 1.2 2010/02/14 21:30:51 dholland Exp $
|
|
|
|
Patch out illegal C constructs.
|
|
|
|
--- ../gcc-3.1/gcc/cp/decl.c~ 2002-05-03 18:55:23.000000000 +0000
|
|
+++ ../gcc-3.1/gcc/cp/decl.c
|
|
@@ -458,6 +458,11 @@ struct binding_level
|
|
? cp_function_chain->bindings \
|
|
: scope_chain->bindings)
|
|
|
|
+#define current_binding_level__LVALUE \
|
|
+ (*(cfun && cp_function_chain->bindings \
|
|
+ ? &cp_function_chain->bindings \
|
|
+ : &scope_chain->bindings))
|
|
+
|
|
/* The binding level of the current class, if any. */
|
|
|
|
#define class_binding_level scope_chain->class_bindings
|
|
@@ -507,7 +512,7 @@ push_binding_level (newlevel, tag_transp
|
|
are active. */
|
|
memset ((char*) newlevel, 0, sizeof (struct binding_level));
|
|
newlevel->level_chain = current_binding_level;
|
|
- current_binding_level = newlevel;
|
|
+ current_binding_level__LVALUE = newlevel;
|
|
newlevel->tag_transparent = tag_transparent;
|
|
newlevel->more_cleanups_ok = 1;
|
|
|
|
@@ -563,7 +568,7 @@ pop_binding_level ()
|
|
#endif /* defined(DEBUG_CP_BINDING_LEVELS) */
|
|
{
|
|
register struct binding_level *level = current_binding_level;
|
|
- current_binding_level = current_binding_level->level_chain;
|
|
+ current_binding_level__LVALUE = current_binding_level->level_chain;
|
|
level->level_chain = free_binding_level;
|
|
#if 0 /* defined(DEBUG_CP_BINDING_LEVELS) */
|
|
if (level->binding_depth != binding_depth)
|
|
@@ -578,7 +583,7 @@ static void
|
|
suspend_binding_level ()
|
|
{
|
|
if (class_binding_level)
|
|
- current_binding_level = class_binding_level;
|
|
+ current_binding_level__LVALUE = class_binding_level;
|
|
|
|
if (global_binding_level)
|
|
{
|
|
@@ -600,7 +605,7 @@ suspend_binding_level ()
|
|
}
|
|
is_class_level = 0;
|
|
#endif /* defined(DEBUG_CP_BINDING_LEVELS) */
|
|
- current_binding_level = current_binding_level->level_chain;
|
|
+ current_binding_level__LVALUE = current_binding_level->level_chain;
|
|
find_class_binding_level ();
|
|
}
|
|
|
|
@@ -613,7 +618,7 @@ resume_binding_level (b)
|
|
my_friendly_assert(!class_binding_level, 386);
|
|
/* Also, resuming a non-directly nested namespace is a no-no. */
|
|
my_friendly_assert(b->level_chain == current_binding_level, 386);
|
|
- current_binding_level = b;
|
|
+ current_binding_level__LVALUE = b;
|
|
#if defined(DEBUG_CP_BINDING_LEVELS)
|
|
b->binding_depth = binding_depth;
|
|
indent ();
|
|
@@ -4292,9 +4297,9 @@ pushdecl_with_scope (x, level)
|
|
else
|
|
{
|
|
b = current_binding_level;
|
|
- current_binding_level = level;
|
|
+ current_binding_level__LVALUE = level;
|
|
x = pushdecl (x);
|
|
- current_binding_level = b;
|
|
+ current_binding_level__LVALUE = b;
|
|
}
|
|
current_function_decl = function_decl;
|
|
return x;
|
|
@@ -6515,7 +6520,7 @@ cxx_init_decl_processing ()
|
|
current_lang_name = lang_name_c;
|
|
|
|
current_function_decl = NULL_TREE;
|
|
- current_binding_level = NULL_BINDING_LEVEL;
|
|
+ current_binding_level__LVALUE = NULL_BINDING_LEVEL;
|
|
free_binding_level = NULL_BINDING_LEVEL;
|
|
|
|
build_common_tree_nodes (flag_signed_char);
|
|
@@ -10080,10 +10085,10 @@ grokdeclarator (declarator, declspecs, d
|
|
if (decl_context == NORMAL && !toplevel_bindings_p ())
|
|
{
|
|
struct binding_level *b = current_binding_level;
|
|
- current_binding_level = b->level_chain;
|
|
+ current_binding_level__LVALUE = b->level_chain;
|
|
if (current_binding_level != 0 && toplevel_bindings_p ())
|
|
decl_context = PARM;
|
|
- current_binding_level = b;
|
|
+ current_binding_level__LVALUE = b;
|
|
}
|
|
|
|
if (name == NULL)
|
|
@@ -13720,7 +13725,7 @@ start_function (declspecs, declarator, a
|
|
FIXME factor out the non-RTL stuff. */
|
|
bl = current_binding_level;
|
|
init_function_start (decl1, input_filename, lineno);
|
|
- current_binding_level = bl;
|
|
+ current_binding_level__LVALUE = bl;
|
|
|
|
/* Even though we're inside a function body, we still don't want to
|
|
call expand_expr to calculate the size of a variable-sized array.
|