mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-30 06:44:43 +08:00
decl.c (init_decl_processing): Change definition of __wchar_t to wchar_t.
2000-11-07 Eric Christopher <echristo@redhat.com> * decl.c (init_decl_processing): Change definition of __wchar_t to wchar_t. Remove artificial declaration of wchar_t. * lex.c: Change instances of __wchar_t to wchar_t. From-SVN: r37348
This commit is contained in:
parent
7ca0e6d96e
commit
5362b0866b
@ -1,3 +1,10 @@
|
||||
2000-11-07 Eric Christopher <echristo@redhat.com>
|
||||
|
||||
* decl.c (init_decl_processing): Change definition of
|
||||
__wchar_t to wchar_t. Remove artificial declaration of
|
||||
wchar_t.
|
||||
* lex.c: Change instances of __wchar_t to wchar_t.
|
||||
|
||||
2000-11-09 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* lex.c (do_identifier): Don't lookup_name for operators.
|
||||
@ -115,7 +122,7 @@
|
||||
* error.c (dump_function_decl): Print no space between
|
||||
`ptr-operator' the `type-specifier' of the return type.
|
||||
(dump_type_prefix): Make sure we put space at the appropriate
|
||||
place.
|
||||
place.
|
||||
|
||||
2000-10-23 Jason Merrill <jason@redhat.com>
|
||||
|
||||
@ -134,7 +141,7 @@
|
||||
|
||||
* optimize.c (copy_body_r): Don't treat CALL_EXPRs specially.
|
||||
|
||||
* typeck.c (c_sizeof): Return an expression of `size_t' type,
|
||||
* typeck.c (c_sizeof): Return an expression of `size_t' type,
|
||||
not one with TYPE_IS_SIZETYPE set.
|
||||
(dubious_conversion_warnings): Remove special-case code.
|
||||
|
||||
@ -147,7 +154,7 @@
|
||||
* tree.c (walk_tree): Handle VECTOR_TYPE.
|
||||
|
||||
* decl.c (init_decl_processing): Call MD_INIT_BUILTINS.
|
||||
|
||||
|
||||
2000-10-21 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* parse.y (operator): Set got_object from got_scope.
|
||||
@ -195,7 +202,7 @@ Fri Oct 20 13:54:59 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
(splay_tree_compare_integer_csts): New function.
|
||||
(layout_class_type): Use a splay_tree, rather than a varray, to
|
||||
represent the offsets of empty bases.
|
||||
|
||||
|
||||
* cp-tree.h (DECL_ANTICIPATED): Don't require a FUNCTION_DECL.
|
||||
* decl.c (select_decl): Don't return declarations that are
|
||||
DECL_ANTICIPATED.
|
||||
@ -227,7 +234,7 @@ Fri Oct 20 13:54:59 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
* except.c (init_exception_processing): Use std_identifier.
|
||||
* init.c (build_member_call): Use fake_std_node.
|
||||
* rtti.c (init_rtti_processing): Use std_identifier.
|
||||
|
||||
|
||||
2000-10-17 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* cp-tree.h (back_end_hook): Remove declaration.
|
||||
@ -295,7 +302,7 @@ Tue Oct 17 20:19:06 2000 Brad Lucier <lucier@math.purdue.edu>
|
||||
(init_repo): Initialize it.
|
||||
* search.c (current_obstack): Remove.
|
||||
* typeck2.c (add_exception_specifier): Don't call build_decl_list.
|
||||
|
||||
|
||||
2000-10-09 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* Make-lang.in (CXX_EXTRA_HEADERS): Remove.
|
||||
@ -331,7 +338,7 @@ Tue Oct 17 20:19:06 2000 Brad Lucier <lucier@math.purdue.edu>
|
||||
|
||||
* pt.c (lookup_template_class): Set current access for enum.
|
||||
(tsubst_enum): Set file & line for enum decl.
|
||||
|
||||
|
||||
* spew.c (yylex): Remove unused variable.
|
||||
|
||||
2000-10-05 Richard Henderson <rth@cygnus.com>
|
||||
@ -354,7 +361,7 @@ Tue Oct 17 20:19:06 2000 Brad Lucier <lucier@math.purdue.edu>
|
||||
2000-10-05 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* pt.c (tsubst_expr, DECL_STMT case): Don't process if
|
||||
tsubsting fails.
|
||||
tsubsting fails.
|
||||
|
||||
2000-10-05 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
@ -366,7 +373,7 @@ Tue Oct 17 20:19:06 2000 Brad Lucier <lucier@math.purdue.edu>
|
||||
|
||||
* decl.c (lang_mark_false_label_stack): Remove.
|
||||
* lex.c (cp_mang_lang_type): Use ggc_alloc_cleared.
|
||||
|
||||
|
||||
2000-09-30 Joseph S. Myers <jsm28@cam.ac.uk>
|
||||
|
||||
* gxxint.texi: Use @email for formatting email addresses.
|
||||
|
@ -188,7 +188,7 @@ static tree start_cleanup_fn PARAMS ((void));
|
||||
static void end_cleanup_fn PARAMS ((void));
|
||||
static tree cp_make_fname_decl PARAMS ((tree, const char *, int));
|
||||
static void initialize_predefined_identifiers PARAMS ((void));
|
||||
static tree check_special_function_return_type
|
||||
static tree check_special_function_return_type
|
||||
PARAMS ((special_function_kind, tree, tree, tree));
|
||||
static tree push_cp_library_fn PARAMS ((enum tree_code, tree));
|
||||
static tree build_cp_library_fn PARAMS ((tree, enum tree_code, tree));
|
||||
@ -491,7 +491,7 @@ struct binding_level
|
||||
replaced with a TEMPLATE_DECL. */
|
||||
unsigned template_parms_p : 1;
|
||||
|
||||
/* Nonzero if this scope corresponds to the `<>' in a
|
||||
/* Nonzero if this scope corresponds to the `<>' in a
|
||||
`template <>' clause. Whenever this flag is set,
|
||||
TEMPLATE_PARMS_P will be set as well. */
|
||||
unsigned template_spec_p : 1;
|
||||
@ -2860,12 +2860,12 @@ pushtag (name, type, globalize)
|
||||
all function definitions in a translation unit in a convenient
|
||||
way. (It's otherwise tricky to find a member function definition
|
||||
it's only pointed to from within a local class.) */
|
||||
if (TYPE_CONTEXT (type)
|
||||
if (TYPE_CONTEXT (type)
|
||||
&& TREE_CODE (TYPE_CONTEXT (type)) == FUNCTION_DECL
|
||||
&& !processing_template_decl)
|
||||
VARRAY_PUSH_TREE (local_classes, type);
|
||||
|
||||
if (!uses_template_parms (type))
|
||||
if (!uses_template_parms (type))
|
||||
{
|
||||
if (flag_new_abi)
|
||||
DECL_ASSEMBLER_NAME (d) = mangle_type (type);
|
||||
@ -4049,7 +4049,7 @@ pushdecl (x)
|
||||
warn if we later see static one. */
|
||||
if (IDENTIFIER_GLOBAL_VALUE (name) == NULL_TREE && TREE_PUBLIC (x))
|
||||
TREE_PUBLIC (name) = 1;
|
||||
|
||||
|
||||
/* Bind the mangled name for the entity. In the future, we
|
||||
should not need to do this; mangled names are an
|
||||
implementation detail of which the front-end should not
|
||||
@ -4745,7 +4745,7 @@ redeclaration_error_message (newdecl, olddecl)
|
||||
else if (TREE_CODE (newdecl) == TEMPLATE_DECL)
|
||||
{
|
||||
if ((TREE_CODE (DECL_TEMPLATE_RESULT (newdecl)) == FUNCTION_DECL
|
||||
&& (DECL_TEMPLATE_RESULT (newdecl)
|
||||
&& (DECL_TEMPLATE_RESULT (newdecl)
|
||||
!= DECL_TEMPLATE_RESULT (olddecl))
|
||||
&& DECL_INITIAL (DECL_TEMPLATE_RESULT (newdecl))
|
||||
&& DECL_INITIAL (DECL_TEMPLATE_RESULT (olddecl)))
|
||||
@ -5152,7 +5152,7 @@ struct cp_switch
|
||||
mark the stack for garbage collection because it is only active
|
||||
during the processing of the body of a function, and we never
|
||||
collect at that point. */
|
||||
|
||||
|
||||
static struct cp_switch *switch_stack;
|
||||
|
||||
/* Called right after a switch-statement condition is parsed.
|
||||
@ -5175,7 +5175,7 @@ void
|
||||
pop_switch ()
|
||||
{
|
||||
struct cp_switch *cs;
|
||||
|
||||
|
||||
cs = switch_stack;
|
||||
splay_tree_delete (cs->cases);
|
||||
switch_stack = switch_stack->next;
|
||||
@ -5197,7 +5197,7 @@ finish_case_label (low_value, high_value)
|
||||
if (high_value)
|
||||
error ("case label not within a switch statement");
|
||||
else if (low_value)
|
||||
cp_error ("case label `%E' not within a switch statement",
|
||||
cp_error ("case label `%E' not within a switch statement",
|
||||
low_value);
|
||||
else
|
||||
error ("`default' label not within a switch statement");
|
||||
@ -5698,8 +5698,8 @@ select_decl (binding, flags)
|
||||
/* When we implicitly declare some builtin entity, we mark it
|
||||
DECL_ANTICIPATED, so that we know to ignore it until it is
|
||||
really declared. */
|
||||
if (val && DECL_P (val)
|
||||
&& DECL_LANG_SPECIFIC (val)
|
||||
if (val && DECL_P (val)
|
||||
&& DECL_LANG_SPECIFIC (val)
|
||||
&& DECL_ANTICIPATED (val))
|
||||
return NULL_TREE;
|
||||
|
||||
@ -6267,7 +6267,7 @@ typedef struct predefined_identifier
|
||||
/* Create all the predefined identifiers. */
|
||||
|
||||
static void
|
||||
initialize_predefined_identifiers ()
|
||||
initialize_predefined_identifiers ()
|
||||
{
|
||||
struct predefined_identifier *pid;
|
||||
|
||||
@ -6385,7 +6385,7 @@ init_decl_processing ()
|
||||
void_type_node);
|
||||
pushdecl (fake_std_node);
|
||||
}
|
||||
|
||||
|
||||
/* Define `int' and `char' first so that dbx will output them first. */
|
||||
record_builtin_type (RID_INT, NULL_PTR, integer_type_node);
|
||||
record_builtin_type (RID_CHAR, "char", char_type_node);
|
||||
@ -6405,7 +6405,7 @@ init_decl_processing ()
|
||||
long_long_unsigned_type_node);
|
||||
record_builtin_type (RID_SHORT, "short int", short_integer_type_node);
|
||||
record_builtin_type (RID_MAX, "short unsigned int",
|
||||
short_unsigned_type_node);
|
||||
short_unsigned_type_node);
|
||||
record_builtin_type (RID_MAX, "unsigned short",
|
||||
short_unsigned_type_node);
|
||||
|
||||
@ -6576,12 +6576,7 @@ init_decl_processing ()
|
||||
wchar_type_node = make_signed_type (wchar_type_size);
|
||||
else
|
||||
wchar_type_node = make_unsigned_type (wchar_type_size);
|
||||
record_builtin_type (RID_WCHAR, "__wchar_t", wchar_type_node);
|
||||
|
||||
/* Artificial declaration of wchar_t -- can be bashed */
|
||||
wchar_decl_node = build_decl (TYPE_DECL, get_identifier ("wchar_t"),
|
||||
wchar_type_node);
|
||||
pushdecl (wchar_decl_node);
|
||||
record_builtin_type (RID_WCHAR, "wchar_t", wchar_type_node);
|
||||
|
||||
/* This is for wide string constants. */
|
||||
wchar_array_type_node
|
||||
@ -6760,7 +6755,7 @@ cp_make_fname_decl (id, name, type_dep)
|
||||
tree decl, type, init;
|
||||
size_t length = strlen (name);
|
||||
tree domain = NULL_TREE;
|
||||
|
||||
|
||||
if (!processing_template_decl)
|
||||
type_dep = 0;
|
||||
if (!type_dep)
|
||||
@ -6791,7 +6786,7 @@ cp_make_fname_decl (id, name, type_dep)
|
||||
}
|
||||
DECL_INITIAL (decl) = init;
|
||||
cp_finish_decl (decl, init, NULL_TREE, LOOKUP_ONLYCONVERTING);
|
||||
|
||||
|
||||
/* We will have to make sure we only emit this, if it is actually used. */
|
||||
return decl;
|
||||
}
|
||||
@ -6823,7 +6818,7 @@ builtin_function (name, type, code, class, libname)
|
||||
|
||||
/* All builtins that don't begin with an `_' should go in the `std'
|
||||
namespace. */
|
||||
if (flag_honor_std && name[0] != '_')
|
||||
if (flag_honor_std && name[0] != '_')
|
||||
{
|
||||
push_namespace (std_identifier);
|
||||
DECL_CONTEXT (decl) = std_node;
|
||||
@ -6937,7 +6932,7 @@ push_cp_library_fn (operator_code, type)
|
||||
enum tree_code operator_code;
|
||||
tree type;
|
||||
{
|
||||
tree fn = build_cp_library_fn (ansi_opname (operator_code),
|
||||
tree fn = build_cp_library_fn (ansi_opname (operator_code),
|
||||
operator_code,
|
||||
type);
|
||||
pushdecl (fn);
|
||||
@ -7399,7 +7394,7 @@ start_decl_1 (decl)
|
||||
&& TREE_CODE (decl) != TYPE_DECL
|
||||
&& TREE_CODE (decl) != TEMPLATE_DECL
|
||||
&& type != error_mark_node
|
||||
&& IS_AGGR_TYPE (type)
|
||||
&& IS_AGGR_TYPE (type)
|
||||
&& ! DECL_EXTERNAL (decl))
|
||||
{
|
||||
if ((! processing_template_decl || ! uses_template_parms (type))
|
||||
@ -7922,7 +7917,7 @@ maybe_inject_for_scope_var (decl)
|
||||
{
|
||||
if (!DECL_NAME (decl))
|
||||
return;
|
||||
|
||||
|
||||
if (current_binding_level->is_for_scope)
|
||||
{
|
||||
struct binding_level *outer
|
||||
@ -8000,7 +7995,7 @@ initialize_local_var (decl, init, flags)
|
||||
saved_stmts_are_full_exprs_p = stmts_are_full_exprs_p ();
|
||||
current_stmt_tree ()->stmts_are_full_exprs_p = 1;
|
||||
finish_expr_stmt (build_aggr_init (decl, init, flags));
|
||||
current_stmt_tree ()->stmts_are_full_exprs_p =
|
||||
current_stmt_tree ()->stmts_are_full_exprs_p =
|
||||
saved_stmts_are_full_exprs_p;
|
||||
}
|
||||
|
||||
@ -8114,9 +8109,9 @@ cp_finish_decl (decl, init, asmspec_tree, flags)
|
||||
|
||||
if (type == error_mark_node)
|
||||
return;
|
||||
|
||||
|
||||
/* Add this declaration to the statement-tree. */
|
||||
if (building_stmt_tree ()
|
||||
if (building_stmt_tree ()
|
||||
&& at_function_scope_p ()
|
||||
&& TREE_CODE (decl) != RESULT_DECL)
|
||||
add_decl_stmt (decl);
|
||||
@ -9140,12 +9135,12 @@ grokvardecl (type, declarator, specbits_in, initialized, constp, in_namespace)
|
||||
set_decl_namespace (decl, context, 0);
|
||||
|
||||
context = DECL_CONTEXT (decl);
|
||||
if (declarator && context && current_lang_name != lang_name_c)
|
||||
if (declarator && context && current_lang_name != lang_name_c)
|
||||
{
|
||||
if (flag_new_abi)
|
||||
DECL_ASSEMBLER_NAME (decl) = mangle_decl (decl);
|
||||
else
|
||||
DECL_ASSEMBLER_NAME (decl)
|
||||
DECL_ASSEMBLER_NAME (decl)
|
||||
= build_static_name (context, declarator);
|
||||
}
|
||||
}
|
||||
@ -9550,7 +9545,7 @@ check_special_function_return_type (sfk, type, ctype, optype)
|
||||
case sfk_constructor:
|
||||
if (type)
|
||||
cp_error ("return type specification for constructor invalid");
|
||||
|
||||
|
||||
/* In the old ABI, we return `this'; in the new ABI we don't
|
||||
bother. */
|
||||
type = flag_new_abi ? void_type_node : build_pointer_type (ctype);
|
||||
@ -9871,7 +9866,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
|
||||
ctor_return_type = TREE_TYPE (dname);
|
||||
sfk = sfk_conversion;
|
||||
if (IDENTIFIER_GLOBAL_VALUE (dname)
|
||||
&& (TREE_CODE (IDENTIFIER_GLOBAL_VALUE (dname))
|
||||
&& (TREE_CODE (IDENTIFIER_GLOBAL_VALUE (dname))
|
||||
== TYPE_DECL))
|
||||
name = IDENTIFIER_POINTER (dname);
|
||||
else
|
||||
@ -10442,7 +10437,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
|
||||
if (IDENTIFIER_TYPENAME_P (tmp))
|
||||
{
|
||||
if (IDENTIFIER_GLOBAL_VALUE (tmp)
|
||||
&& (TREE_CODE (IDENTIFIER_GLOBAL_VALUE (tmp))
|
||||
&& (TREE_CODE (IDENTIFIER_GLOBAL_VALUE (tmp))
|
||||
== TYPE_DECL))
|
||||
name = IDENTIFIER_POINTER (tmp);
|
||||
else
|
||||
@ -10585,7 +10580,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
|
||||
type = create_array_type_for_decl (dname, type, size);
|
||||
|
||||
/* VLAs never work as fields. */
|
||||
if (decl_context == FIELD && !processing_template_decl
|
||||
if (decl_context == FIELD && !processing_template_decl
|
||||
&& TREE_CODE (type) == ARRAY_TYPE
|
||||
&& TYPE_DOMAIN (type) != NULL_TREE
|
||||
&& !TREE_CONSTANT (TYPE_MAX_VALUE (TYPE_DOMAIN (type))))
|
||||
@ -10948,7 +10943,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
|
||||
t = ctype;
|
||||
while (t != NULL_TREE && CLASS_TYPE_P (t))
|
||||
{
|
||||
/* You're supposed to have one `template <...>'
|
||||
/* You're supposed to have one `template <...>'
|
||||
for every template class, but you don't need one
|
||||
for a full specialization. For example:
|
||||
|
||||
@ -11191,7 +11186,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
|
||||
DECL_NAME (CLASSTYPE_TI_TEMPLATE (type))
|
||||
= TYPE_IDENTIFIER (type);
|
||||
|
||||
if (flag_new_abi)
|
||||
if (flag_new_abi)
|
||||
DECL_ASSEMBLER_NAME (decl) = mangle_type (type);
|
||||
else
|
||||
{
|
||||
@ -11203,7 +11198,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized, attrlist)
|
||||
DECL_CONTEXT (decl) = current_class_type;
|
||||
else
|
||||
DECL_CONTEXT (decl) = FROB_CONTEXT (current_namespace);
|
||||
|
||||
|
||||
DECL_ASSEMBLER_NAME (decl) = DECL_NAME (decl);
|
||||
DECL_ASSEMBLER_NAME (decl)
|
||||
= get_identifier (build_overload_name (type, 1, 1));
|
||||
@ -11984,7 +11979,7 @@ check_default_argument (decl, arg)
|
||||
|
||||
The keyword `this' shall not be used in a default argument of a
|
||||
member function. */
|
||||
var = walk_tree_without_duplicates (&arg, local_variable_p_walkfn,
|
||||
var = walk_tree_without_duplicates (&arg, local_variable_p_walkfn,
|
||||
NULL);
|
||||
if (var)
|
||||
{
|
||||
@ -12409,7 +12404,7 @@ grok_op_properties (decl, virtualp, friendp)
|
||||
case CALL_EXPR:
|
||||
TYPE_OVERLOADS_CALL_EXPR (current_class_type) = 1;
|
||||
break;
|
||||
|
||||
|
||||
case ARRAY_REF:
|
||||
TYPE_OVERLOADS_ARRAY_REF (current_class_type) = 1;
|
||||
break;
|
||||
@ -12418,19 +12413,19 @@ grok_op_properties (decl, virtualp, friendp)
|
||||
case MEMBER_REF:
|
||||
TYPE_OVERLOADS_ARROW (current_class_type) = 1;
|
||||
break;
|
||||
|
||||
|
||||
case NEW_EXPR:
|
||||
TYPE_HAS_NEW_OPERATOR (current_class_type) = 1;
|
||||
break;
|
||||
|
||||
|
||||
case DELETE_EXPR:
|
||||
TYPE_GETS_DELETE (current_class_type) |= 1;
|
||||
break;
|
||||
|
||||
|
||||
case VEC_NEW_EXPR:
|
||||
TYPE_HAS_ARRAY_NEW_OPERATOR (current_class_type) = 1;
|
||||
break;
|
||||
|
||||
|
||||
case VEC_DELETE_EXPR:
|
||||
TYPE_GETS_DELETE (current_class_type) |= 2;
|
||||
break;
|
||||
@ -12508,7 +12503,7 @@ grok_op_properties (decl, virtualp, friendp)
|
||||
{
|
||||
int ref = (TREE_CODE (t) == REFERENCE_TYPE);
|
||||
const char *what = 0;
|
||||
|
||||
|
||||
if (ref)
|
||||
t = TYPE_MAIN_VARIANT (TREE_TYPE (t));
|
||||
|
||||
@ -12528,7 +12523,7 @@ grok_op_properties (decl, virtualp, friendp)
|
||||
}
|
||||
}
|
||||
|
||||
if (DECL_ASSIGNMENT_OPERATOR_P (decl)
|
||||
if (DECL_ASSIGNMENT_OPERATOR_P (decl)
|
||||
&& operator_code == NOP_EXPR)
|
||||
{
|
||||
tree parmtype;
|
||||
@ -13128,9 +13123,9 @@ xref_basetypes (code_type_node, name, ref, binfo)
|
||||
|
||||
if (CLASS_TYPE_P (basetype))
|
||||
{
|
||||
TYPE_HAS_NEW_OPERATOR (ref)
|
||||
TYPE_HAS_NEW_OPERATOR (ref)
|
||||
|= TYPE_HAS_NEW_OPERATOR (basetype);
|
||||
TYPE_HAS_ARRAY_NEW_OPERATOR (ref)
|
||||
TYPE_HAS_ARRAY_NEW_OPERATOR (ref)
|
||||
|= TYPE_HAS_ARRAY_NEW_OPERATOR (basetype);
|
||||
TYPE_GETS_DELETE (ref) |= TYPE_GETS_DELETE (basetype);
|
||||
/* If the base-class uses multiple inheritance, so do we. */
|
||||
@ -13760,7 +13755,7 @@ start_function (declspecs, declarator, attrs, flags)
|
||||
|
||||
/* If we are (erroneously) defining a function that we have already
|
||||
defined before, wipe out what we knew before. */
|
||||
if (!DECL_PENDING_INLINE_P (decl1)
|
||||
if (!DECL_PENDING_INLINE_P (decl1)
|
||||
&& DECL_SAVED_FUNCTION_DATA (decl1))
|
||||
{
|
||||
free (DECL_SAVED_FUNCTION_DATA (decl1));
|
||||
@ -13960,7 +13955,7 @@ store_parm_decls (current_function_parms)
|
||||
else
|
||||
cp_error ("parameter `%D' declared void", parm);
|
||||
|
||||
cleanup = (processing_template_decl
|
||||
cleanup = (processing_template_decl
|
||||
? NULL_TREE
|
||||
: maybe_build_cleanup (parm));
|
||||
|
||||
@ -14726,7 +14721,7 @@ lang_mark_tree (t)
|
||||
{
|
||||
ggc_mark (ld);
|
||||
c_mark_lang_decl (&ld->decl_flags.base);
|
||||
if (!DECL_GLOBAL_CTOR_P (t)
|
||||
if (!DECL_GLOBAL_CTOR_P (t)
|
||||
&& !DECL_GLOBAL_DTOR_P (t)
|
||||
&& !DECL_THUNK_P (t))
|
||||
ggc_mark_tree (ld->decl_flags.u2.access);
|
||||
|
54
gcc/cp/lex.c
54
gcc/cp/lex.c
@ -170,7 +170,7 @@ make_pointer_declarator (cv_qualifiers, target)
|
||||
|
||||
We return an ADDR_EXPR whose "contents" are TARGET
|
||||
and whose type is the modifier list. */
|
||||
|
||||
|
||||
tree
|
||||
make_reference_declarator (cv_qualifiers, target)
|
||||
tree cv_qualifiers, target;
|
||||
@ -199,7 +199,7 @@ tree
|
||||
make_call_declarator (target, parms, cv_qualifiers, exception_specification)
|
||||
tree target, parms, cv_qualifiers, exception_specification;
|
||||
{
|
||||
target = build_parse_node (CALL_EXPR, target,
|
||||
target = build_parse_node (CALL_EXPR, target,
|
||||
tree_cons (parms, cv_qualifiers, NULL_TREE),
|
||||
/* The third operand is really RTL. We
|
||||
shouldn't put anything there. */
|
||||
@ -323,7 +323,7 @@ init_cpp_parse ()
|
||||
operator_name_info_t operator_name_info[(int) LAST_CPLUS_TREE_CODE];
|
||||
/* Similar, but for assignment operators. */
|
||||
operator_name_info_t assignment_operator_name_info[(int) LAST_CPLUS_TREE_CODE];
|
||||
|
||||
|
||||
/* Initialize data structures that keep track of operator names. */
|
||||
|
||||
#define DEF_OPERATOR(NAME, C, NM, OM, AR, AP) \
|
||||
@ -337,7 +337,7 @@ init_operators ()
|
||||
tree identifier;
|
||||
char buffer[256];
|
||||
struct operator_name_info_t *oni;
|
||||
|
||||
|
||||
#define DEF_OPERATOR(NAME, CODE, NEW_MANGLING, OLD_MANGLING, ARITY, ASSN_P) \
|
||||
sprintf (buffer, ISALPHA (NAME[0]) ? "operator %s" : "operator%s", NAME); \
|
||||
identifier = get_identifier (buffer); \
|
||||
@ -353,7 +353,7 @@ init_operators ()
|
||||
#include "operators.def"
|
||||
#undef DEF_OPERATOR
|
||||
|
||||
operator_name_info[(int) ERROR_MARK].identifier
|
||||
operator_name_info[(int) ERROR_MARK].identifier
|
||||
= get_identifier ("<invalid operator>");
|
||||
|
||||
/* Handle some special cases. These operators are not defined in
|
||||
@ -361,8 +361,8 @@ init_operators ()
|
||||
for error-reporting. (Eventually, we should ensure that this
|
||||
does not happen. Error messages involving these operators will
|
||||
be confusing to users.) */
|
||||
|
||||
operator_name_info [(int) INIT_EXPR].name
|
||||
|
||||
operator_name_info [(int) INIT_EXPR].name
|
||||
= operator_name_info [(int) MODIFY_EXPR].name;
|
||||
operator_name_info [(int) EXACT_DIV_EXPR].name = "(ceiling /)";
|
||||
operator_name_info [(int) CEIL_DIV_EXPR].name = "(ceiling /)";
|
||||
@ -380,19 +380,19 @@ init_operators ()
|
||||
operator_name_info [(int) RANGE_EXPR].name = "...";
|
||||
operator_name_info [(int) CONVERT_EXPR].name = "+";
|
||||
|
||||
assignment_operator_name_info [(int) EXACT_DIV_EXPR].name
|
||||
assignment_operator_name_info [(int) EXACT_DIV_EXPR].name
|
||||
= "(exact /=)";
|
||||
assignment_operator_name_info [(int) CEIL_DIV_EXPR].name
|
||||
assignment_operator_name_info [(int) CEIL_DIV_EXPR].name
|
||||
= "(ceiling /=)";
|
||||
assignment_operator_name_info [(int) FLOOR_DIV_EXPR].name
|
||||
assignment_operator_name_info [(int) FLOOR_DIV_EXPR].name
|
||||
= "(floor /=)";
|
||||
assignment_operator_name_info [(int) ROUND_DIV_EXPR].name
|
||||
assignment_operator_name_info [(int) ROUND_DIV_EXPR].name
|
||||
= "(round /=)";
|
||||
assignment_operator_name_info [(int) CEIL_MOD_EXPR].name
|
||||
assignment_operator_name_info [(int) CEIL_MOD_EXPR].name
|
||||
= "(ceiling %=)";
|
||||
assignment_operator_name_info [(int) FLOOR_MOD_EXPR].name
|
||||
assignment_operator_name_info [(int) FLOOR_MOD_EXPR].name
|
||||
= "(floor %=)";
|
||||
assignment_operator_name_info [(int) ROUND_MOD_EXPR].name
|
||||
assignment_operator_name_info [(int) ROUND_MOD_EXPR].name
|
||||
= "(round %=)";
|
||||
}
|
||||
|
||||
@ -443,7 +443,6 @@ static const struct resword reswords[] =
|
||||
{ "__typeof__", RID_TYPEOF, 0 },
|
||||
{ "__volatile", RID_VOLATILE, 0 },
|
||||
{ "__volatile__", RID_VOLATILE, 0 },
|
||||
{ "__wchar_t", RID_WCHAR, 0 },
|
||||
{ "asm", RID_ASM, D_ASM },
|
||||
{ "and", RID_AND, D_OPNAME },
|
||||
{ "and_eq", RID_AND_EQ, D_OPNAME },
|
||||
@ -515,6 +514,7 @@ static const struct resword reswords[] =
|
||||
{ "virtual", RID_VIRTUAL, 0 },
|
||||
{ "void", RID_VOID, 0 },
|
||||
{ "volatile", RID_VOLATILE, 0 },
|
||||
{ "wchar_t", RID_WCHAR, 0 },
|
||||
{ "while", RID_WHILE, 0 },
|
||||
{ "xor", RID_XOR, D_OPNAME },
|
||||
{ "xor_eq", RID_XOR_EQ, D_OPNAME },
|
||||
@ -560,7 +560,7 @@ const short rid_to_yy[RID_MAX] =
|
||||
/* RID_BYCOPY */ 0,
|
||||
/* RID_BYREF */ 0,
|
||||
/* RID_ONEWAY */ 0,
|
||||
|
||||
|
||||
/* C */
|
||||
/* RID_INT */ TYPESPEC,
|
||||
/* RID_CHAR */ TYPESPEC,
|
||||
@ -708,7 +708,7 @@ init_parse (filename)
|
||||
set_identifier_size (sizeof (struct lang_identifier));
|
||||
decl_printable_name = lang_printable_name;
|
||||
|
||||
internal_filename = ggc_alloc_string (INTERNAL_FILENAME,
|
||||
internal_filename = ggc_alloc_string (INTERNAL_FILENAME,
|
||||
sizeof (INTERNAL_FILENAME));
|
||||
input_filename = internal_filename;
|
||||
|
||||
@ -896,7 +896,7 @@ print_parse_statistics ()
|
||||
int i;
|
||||
int maxlen = REDUCE_LENGTH;
|
||||
unsigned *sorted;
|
||||
|
||||
|
||||
if (reduce_count[-1] == 0)
|
||||
return;
|
||||
|
||||
@ -981,7 +981,7 @@ extract_interface_info ()
|
||||
if (flag_alt_external_templates)
|
||||
{
|
||||
tree til = tinst_for_decl ();
|
||||
|
||||
|
||||
if (til)
|
||||
finfo = get_fileinfo (TINST_FILE (til));
|
||||
}
|
||||
@ -1117,7 +1117,7 @@ parse_strconst_pragma (name, opt)
|
||||
error ("invalid #pragma %s", name);
|
||||
return (tree)-1;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
handle_pragma_vtable (dfile)
|
||||
cpp_reader *dfile ATTRIBUTE_UNUSED;
|
||||
@ -1392,15 +1392,15 @@ do_identifier (token, parsing, args)
|
||||
like local variables, rather than creating TEMPLATE_DECLs for the
|
||||
local variables and then finding matching instantiations. */
|
||||
if (current_template_parms
|
||||
&& (is_overloaded_fn (id)
|
||||
|| (TREE_CODE (id) == VAR_DECL
|
||||
&& (is_overloaded_fn (id)
|
||||
|| (TREE_CODE (id) == VAR_DECL
|
||||
&& CP_DECL_CONTEXT (id)
|
||||
&& TREE_CODE (CP_DECL_CONTEXT (id)) == FUNCTION_DECL)
|
||||
|| TREE_CODE (id) == PARM_DECL
|
||||
|| TREE_CODE (id) == RESULT_DECL
|
||||
|| TREE_CODE (id) == USING_DECL))
|
||||
id = build_min_nt (LOOKUP_EXPR, token);
|
||||
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
@ -1418,7 +1418,7 @@ do_scoped_id (token, parsing)
|
||||
id = NULL_TREE;
|
||||
else
|
||||
id = BINDING_VALUE (id);
|
||||
}
|
||||
}
|
||||
else
|
||||
id = IDENTIFIER_GLOBAL_VALUE (token);
|
||||
if (parsing && yychar == YYEMPTY)
|
||||
@ -1616,7 +1616,7 @@ cp_make_lang_type (code)
|
||||
{
|
||||
struct lang_type *pi;
|
||||
|
||||
pi = ((struct lang_type *)
|
||||
pi = ((struct lang_type *)
|
||||
ggc_alloc_cleared (sizeof (struct lang_type)));
|
||||
|
||||
TYPE_LANG_SPECIFIC (t) = pi;
|
||||
@ -1669,9 +1669,9 @@ compiler_error VPARAMS ((const char *msg, ...))
|
||||
#endif
|
||||
char buf[1024];
|
||||
va_list ap;
|
||||
|
||||
|
||||
VA_START (ap, msg);
|
||||
|
||||
|
||||
#ifndef ANSI_PROTOTYPES
|
||||
msg = va_arg (ap, const char *);
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user