typeck.c (composite_pointer_type_r, [...]): Change pedwarn to permerror.
* typeck.c (composite_pointer_type_r, cxx_sizeof_expr, cxx_alignof_expr, check_template_keyword, cp_build_binary_op, pointer_diff, cp_build_unary_op, build_x_compound_expr_from_list, build_reinterpret_cast_1, cp_build_c_cast, check_return_expr): Change pedwarn to permerror. * init.c (perform_member_init, build_new_1, build_new): Likewise. * decl.c (warn_extern_redeclared_static, duplicate_decls, * identify_goto, check_previous_goto_1, check_goto, define_label, check_tag_decl, start_decl, check_class_member_definition_namespace, grokfndecl, grokdeclarator): Likewise. * except.c (check_handlers): Likewise. * typeck2.c (digest_init): Likewise. * pt.c (check_specialization_namespace, check_explicit_instantiation_namespace, maybe_process_partial_specialization, check_explicit_specialization, convert_template_argument, do_decl_instantiation, do_type_instantiation, instantiate_decl): Likewise. * semantics.c (finish_template_type_parm): Likewise. * name-lookup.c (pushdecl_maybe_friend, check_for_out_of_scope_variable): Likewise. * decl2.c (finish_static_data_member_decl, build_anon_union_vars, coerce_new_type): Likewise. * parser.c (cp_parser_nested_name_specifier_opt, cp_parser_mem_initializer, cp_parser_elaborated_type_specifier, cp_parser_class_head, cp_parser_check_class_key): Likewise. (cp_parser_parameter_declaration): Check flag_permissive instead of flag_pedantic_errors. * call.c (joust): Change pedwarn to warning. * friend.c (make_friend_class): Likewise. From-SVN: r136999
This commit is contained in:
parent
6c813b1005
commit
37ec60ed2c
|
@ -1,3 +1,35 @@
|
||||||
|
2008-06-21 Jonathan Wakely <jwakely.gcc@gmail.com>
|
||||||
|
|
||||||
|
* typeck.c (composite_pointer_type_r, cxx_sizeof_expr,
|
||||||
|
cxx_alignof_expr, check_template_keyword, cp_build_binary_op,
|
||||||
|
pointer_diff, cp_build_unary_op, build_x_compound_expr_from_list,
|
||||||
|
build_reinterpret_cast_1, cp_build_c_cast, check_return_expr): Change
|
||||||
|
pedwarn to permerror.
|
||||||
|
* init.c (perform_member_init, build_new_1, build_new): Likewise.
|
||||||
|
* decl.c (warn_extern_redeclared_static, duplicate_decls,
|
||||||
|
* identify_goto, check_previous_goto_1, check_goto, define_label,
|
||||||
|
check_tag_decl, start_decl, check_class_member_definition_namespace,
|
||||||
|
grokfndecl, grokdeclarator): Likewise.
|
||||||
|
* except.c (check_handlers): Likewise.
|
||||||
|
* typeck2.c (digest_init): Likewise.
|
||||||
|
* pt.c (check_specialization_namespace,
|
||||||
|
check_explicit_instantiation_namespace,
|
||||||
|
maybe_process_partial_specialization, check_explicit_specialization,
|
||||||
|
convert_template_argument, do_decl_instantiation,
|
||||||
|
do_type_instantiation, instantiate_decl): Likewise.
|
||||||
|
* semantics.c (finish_template_type_parm): Likewise.
|
||||||
|
* name-lookup.c (pushdecl_maybe_friend,
|
||||||
|
check_for_out_of_scope_variable): Likewise.
|
||||||
|
* decl2.c (finish_static_data_member_decl, build_anon_union_vars,
|
||||||
|
coerce_new_type): Likewise.
|
||||||
|
* parser.c (cp_parser_nested_name_specifier_opt,
|
||||||
|
cp_parser_mem_initializer, cp_parser_elaborated_type_specifier,
|
||||||
|
cp_parser_class_head, cp_parser_check_class_key): Likewise.
|
||||||
|
(cp_parser_parameter_declaration): Check flag_permissive instead of
|
||||||
|
flag_pedantic_errors.
|
||||||
|
* call.c (joust): Change pedwarn to warning.
|
||||||
|
* friend.c (make_friend_class): Likewise.
|
||||||
|
|
||||||
2008-06-16 Jan Hubicka <jh@suse.cz>
|
2008-06-16 Jan Hubicka <jh@suse.cz>
|
||||||
|
|
||||||
* method.c: Include cgraph.h.
|
* method.c: Include cgraph.h.
|
||||||
|
|
|
@ -6563,10 +6563,10 @@ tweak:
|
||||||
{
|
{
|
||||||
if (warn)
|
if (warn)
|
||||||
{
|
{
|
||||||
pedwarn ("\
|
warning (0,
|
||||||
ISO C++ says that these are ambiguous, even \
|
"ISO C++ says that these are ambiguous, even "
|
||||||
though the worst conversion for the first is better than \
|
"though the worst conversion for the first is better than "
|
||||||
the worst conversion for the second:");
|
"the worst conversion for the second:");
|
||||||
print_z_candidate (_("candidate 1:"), w);
|
print_z_candidate (_("candidate 1:"), w);
|
||||||
print_z_candidate (_("candidate 2:"), l);
|
print_z_candidate (_("candidate 2:"), l);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1055,8 +1055,8 @@ warn_extern_redeclared_static (tree newdecl, tree olddecl)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
name = DECL_ASSEMBLER_NAME (newdecl);
|
name = DECL_ASSEMBLER_NAME (newdecl);
|
||||||
pedwarn ("%qD was declared %<extern%> and later %<static%>", newdecl);
|
permerror ("%qD was declared %<extern%> and later %<static%>", newdecl);
|
||||||
pedwarn ("previous declaration of %q+D", olddecl);
|
permerror ("previous declaration of %q+D", olddecl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* NEW_DECL is a redeclaration of OLD_DECL; both are functions or
|
/* NEW_DECL is a redeclaration of OLD_DECL; both are functions or
|
||||||
|
@ -1539,9 +1539,9 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend)
|
||||||
if (1 == simple_cst_equal (TREE_PURPOSE (t1),
|
if (1 == simple_cst_equal (TREE_PURPOSE (t1),
|
||||||
TREE_PURPOSE (t2)))
|
TREE_PURPOSE (t2)))
|
||||||
{
|
{
|
||||||
pedwarn ("default argument given for parameter %d of %q#D",
|
permerror ("default argument given for parameter %d of %q#D",
|
||||||
i, newdecl);
|
i, newdecl);
|
||||||
pedwarn ("after previous specification in %q+#D", olddecl);
|
permerror ("after previous specification in %q+#D", olddecl);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -2458,11 +2458,11 @@ static void
|
||||||
identify_goto (tree decl, const location_t *locus)
|
identify_goto (tree decl, const location_t *locus)
|
||||||
{
|
{
|
||||||
if (decl)
|
if (decl)
|
||||||
pedwarn ("jump to label %qD", decl);
|
permerror ("jump to label %qD", decl);
|
||||||
else
|
else
|
||||||
pedwarn ("jump to case label");
|
permerror ("jump to case label");
|
||||||
if (locus)
|
if (locus)
|
||||||
pedwarn ("%H from here", locus);
|
permerror ("%H from here", locus);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check that a single previously seen jump to a newly defined label
|
/* Check that a single previously seen jump to a newly defined label
|
||||||
|
@ -2504,7 +2504,7 @@ check_previous_goto_1 (tree decl, struct cp_binding_level* level, tree names,
|
||||||
if (problem > 1)
|
if (problem > 1)
|
||||||
error (" crosses initialization of %q+#D", new_decls);
|
error (" crosses initialization of %q+#D", new_decls);
|
||||||
else
|
else
|
||||||
pedwarn (" enters scope of non-POD %q+#D", new_decls);
|
permerror (" enters scope of non-POD %q+#D", new_decls);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (b == level)
|
if (b == level)
|
||||||
|
@ -2600,8 +2600,8 @@ check_goto (tree decl)
|
||||||
if (ent->in_try_scope || ent->in_catch_scope
|
if (ent->in_try_scope || ent->in_catch_scope
|
||||||
|| ent->in_omp_scope || ent->bad_decls)
|
|| ent->in_omp_scope || ent->bad_decls)
|
||||||
{
|
{
|
||||||
pedwarn ("jump to label %q+D", decl);
|
permerror ("jump to label %q+D", decl);
|
||||||
pedwarn (" from here");
|
permerror (" from here");
|
||||||
identified = true;
|
identified = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2619,7 +2619,7 @@ check_goto (tree decl)
|
||||||
else if (u > 1)
|
else if (u > 1)
|
||||||
error (" skips initialization of %q+#D", b);
|
error (" skips initialization of %q+#D", b);
|
||||||
else
|
else
|
||||||
pedwarn (" enters scope of non-POD %q+#D", b);
|
permerror (" enters scope of non-POD %q+#D", b);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ent->in_try_scope)
|
if (ent->in_try_scope)
|
||||||
|
@ -2640,8 +2640,8 @@ check_goto (tree decl)
|
||||||
{
|
{
|
||||||
if (!identified)
|
if (!identified)
|
||||||
{
|
{
|
||||||
pedwarn ("jump to label %q+D", decl);
|
permerror ("jump to label %q+D", decl);
|
||||||
pedwarn (" from here");
|
permerror (" from here");
|
||||||
identified = true;
|
identified = true;
|
||||||
}
|
}
|
||||||
error (" exits OpenMP structured block");
|
error (" exits OpenMP structured block");
|
||||||
|
@ -2693,7 +2693,7 @@ define_label (location_t location, tree name)
|
||||||
p->more_cleanups_ok = 0;
|
p->more_cleanups_ok = 0;
|
||||||
|
|
||||||
if (name == get_identifier ("wchar_t"))
|
if (name == get_identifier ("wchar_t"))
|
||||||
pedwarn ("label named wchar_t");
|
permerror ("label named wchar_t");
|
||||||
|
|
||||||
if (DECL_INITIAL (decl) != NULL_TREE)
|
if (DECL_INITIAL (decl) != NULL_TREE)
|
||||||
{
|
{
|
||||||
|
@ -3767,7 +3767,7 @@ check_tag_decl (cp_decl_specifier_seq *declspecs)
|
||||||
else if (declspecs->redefined_builtin_type)
|
else if (declspecs->redefined_builtin_type)
|
||||||
{
|
{
|
||||||
if (!in_system_header)
|
if (!in_system_header)
|
||||||
pedwarn ("redeclaration of C++ built-in type %qT",
|
permerror ("redeclaration of C++ built-in type %qT",
|
||||||
declspecs->redefined_builtin_type);
|
declspecs->redefined_builtin_type);
|
||||||
return NULL_TREE;
|
return NULL_TREE;
|
||||||
}
|
}
|
||||||
|
@ -3781,7 +3781,7 @@ check_tag_decl (cp_decl_specifier_seq *declspecs)
|
||||||
else if (declspecs->type == error_mark_node)
|
else if (declspecs->type == error_mark_node)
|
||||||
error_p = true;
|
error_p = true;
|
||||||
if (declared_type == NULL_TREE && ! saw_friend && !error_p)
|
if (declared_type == NULL_TREE && ! saw_friend && !error_p)
|
||||||
pedwarn ("declaration does not declare anything");
|
permerror ("declaration does not declare anything");
|
||||||
/* Check for an anonymous union. */
|
/* Check for an anonymous union. */
|
||||||
else if (declared_type && RECORD_OR_UNION_CODE_P (TREE_CODE (declared_type))
|
else if (declared_type && RECORD_OR_UNION_CODE_P (TREE_CODE (declared_type))
|
||||||
&& TYPE_ANONYMOUS_P (declared_type))
|
&& TYPE_ANONYMOUS_P (declared_type))
|
||||||
|
@ -4054,7 +4054,7 @@ start_decl (const cp_declarator *declarator,
|
||||||
if (DECL_CONTEXT (field) != context)
|
if (DECL_CONTEXT (field) != context)
|
||||||
{
|
{
|
||||||
if (!same_type_p (DECL_CONTEXT (field), context))
|
if (!same_type_p (DECL_CONTEXT (field), context))
|
||||||
pedwarn ("ISO C++ does not permit %<%T::%D%> "
|
permerror ("ISO C++ does not permit %<%T::%D%> "
|
||||||
"to be defined as %<%T::%D%>",
|
"to be defined as %<%T::%D%>",
|
||||||
DECL_CONTEXT (field), DECL_NAME (decl),
|
DECL_CONTEXT (field), DECL_NAME (decl),
|
||||||
context, DECL_NAME (decl));
|
context, DECL_NAME (decl));
|
||||||
|
@ -4110,7 +4110,7 @@ start_decl (const cp_declarator *declarator,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DECL_EXTERNAL (decl) && ! DECL_TEMPLATE_SPECIALIZATION (decl))
|
if (DECL_EXTERNAL (decl) && ! DECL_TEMPLATE_SPECIALIZATION (decl))
|
||||||
pedwarn ("declaration of %q#D outside of class is not definition",
|
permerror ("declaration of %q#D outside of class is not definition",
|
||||||
decl);
|
decl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6319,7 +6319,7 @@ check_class_member_definition_namespace (tree decl)
|
||||||
The definition for a static data member shall appear in a
|
The definition for a static data member shall appear in a
|
||||||
namespace scope enclosing the member's class definition. */
|
namespace scope enclosing the member's class definition. */
|
||||||
if (!is_ancestor (current_namespace, DECL_CONTEXT (decl)))
|
if (!is_ancestor (current_namespace, DECL_CONTEXT (decl)))
|
||||||
pedwarn ("definition of %qD is not in namespace enclosing %qT",
|
permerror ("definition of %qD is not in namespace enclosing %qT",
|
||||||
decl, DECL_CONTEXT (decl));
|
decl, DECL_CONTEXT (decl));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6553,16 +6553,16 @@ grokfndecl (tree ctype,
|
||||||
/* Allow this; it's pretty common in C. */;
|
/* Allow this; it's pretty common in C. */;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pedwarn ("non-local function %q#D uses anonymous type",
|
permerror ("non-local function %q#D uses anonymous type",
|
||||||
decl);
|
decl);
|
||||||
if (DECL_ORIGINAL_TYPE (TYPE_NAME (t)))
|
if (DECL_ORIGINAL_TYPE (TYPE_NAME (t)))
|
||||||
pedwarn ("%q+#D does not refer to the unqualified "
|
permerror ("%q+#D does not refer to the unqualified "
|
||||||
"type, so it is not used for linkage",
|
"type, so it is not used for linkage",
|
||||||
TYPE_NAME (t));
|
TYPE_NAME (t));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
pedwarn ("non-local function %q#D uses local type %qT", decl, t);
|
permerror ("non-local function %q#D uses local type %qT", decl, t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7706,7 +7706,9 @@ grokdeclarator (const cp_declarator *declarator,
|
||||||
/* We've already issued an error, don't complain more. */;
|
/* We've already issued an error, don't complain more. */;
|
||||||
else if (in_system_header || flag_ms_extensions)
|
else if (in_system_header || flag_ms_extensions)
|
||||||
/* Allow it, sigh. */;
|
/* Allow it, sigh. */;
|
||||||
else if (pedantic || ! is_main)
|
else if (! is_main)
|
||||||
|
permerror ("ISO C++ forbids declaration of %qs with no type", name);
|
||||||
|
else if (pedantic)
|
||||||
pedwarn ("ISO C++ forbids declaration of %qs with no type", name);
|
pedwarn ("ISO C++ forbids declaration of %qs with no type", name);
|
||||||
else
|
else
|
||||||
warning (OPT_Wreturn_type,
|
warning (OPT_Wreturn_type,
|
||||||
|
@ -8157,7 +8159,7 @@ grokdeclarator (const cp_declarator *declarator,
|
||||||
explicitp = 2;
|
explicitp = 2;
|
||||||
if (virtualp)
|
if (virtualp)
|
||||||
{
|
{
|
||||||
pedwarn ("constructors cannot be declared virtual");
|
permerror ("constructors cannot be declared virtual");
|
||||||
virtualp = 0;
|
virtualp = 0;
|
||||||
}
|
}
|
||||||
if (decl_context == FIELD
|
if (decl_context == FIELD
|
||||||
|
@ -8380,11 +8382,11 @@ grokdeclarator (const cp_declarator *declarator,
|
||||||
{
|
{
|
||||||
if (friendp)
|
if (friendp)
|
||||||
{
|
{
|
||||||
pedwarn ("member functions are implicitly friends of their class");
|
permerror ("member functions are implicitly friends of their class");
|
||||||
friendp = 0;
|
friendp = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
pedwarn ("extra qualification %<%T::%> on member %qs",
|
permerror ("extra qualification %<%T::%> on member %qs",
|
||||||
ctype, name);
|
ctype, name);
|
||||||
}
|
}
|
||||||
else if (/* If the qualifying type is already complete, then we
|
else if (/* If the qualifying type is already complete, then we
|
||||||
|
@ -8569,7 +8571,7 @@ grokdeclarator (const cp_declarator *declarator,
|
||||||
DECL_ABSTRACT (decl) = 1;
|
DECL_ABSTRACT (decl) = 1;
|
||||||
}
|
}
|
||||||
else if (constructor_name_p (unqualified_id, current_class_type))
|
else if (constructor_name_p (unqualified_id, current_class_type))
|
||||||
pedwarn ("ISO C++ forbids nested type %qD with same name "
|
permerror ("ISO C++ forbids nested type %qD with same name "
|
||||||
"as enclosing class",
|
"as enclosing class",
|
||||||
unqualified_id);
|
unqualified_id);
|
||||||
|
|
||||||
|
@ -8694,13 +8696,13 @@ grokdeclarator (const cp_declarator *declarator,
|
||||||
{
|
{
|
||||||
/* Don't allow friend declaration without a class-key. */
|
/* Don't allow friend declaration without a class-key. */
|
||||||
if (TREE_CODE (type) == TEMPLATE_TYPE_PARM)
|
if (TREE_CODE (type) == TEMPLATE_TYPE_PARM)
|
||||||
pedwarn ("template parameters cannot be friends");
|
permerror ("template parameters cannot be friends");
|
||||||
else if (TREE_CODE (type) == TYPENAME_TYPE)
|
else if (TREE_CODE (type) == TYPENAME_TYPE)
|
||||||
pedwarn ("friend declaration requires class-key, "
|
permerror ("friend declaration requires class-key, "
|
||||||
"i.e. %<friend class %T::%D%>",
|
"i.e. %<friend class %T::%D%>",
|
||||||
TYPE_CONTEXT (type), TYPENAME_TYPE_FULLNAME (type));
|
TYPE_CONTEXT (type), TYPENAME_TYPE_FULLNAME (type));
|
||||||
else
|
else
|
||||||
pedwarn ("friend declaration requires class-key, "
|
permerror ("friend declaration requires class-key, "
|
||||||
"i.e. %<friend %#T%>",
|
"i.e. %<friend %#T%>",
|
||||||
type);
|
type);
|
||||||
}
|
}
|
||||||
|
@ -8987,7 +8989,7 @@ grokdeclarator (const cp_declarator *declarator,
|
||||||
{
|
{
|
||||||
/* Friends are treated specially. */
|
/* Friends are treated specially. */
|
||||||
if (ctype == current_class_type)
|
if (ctype == current_class_type)
|
||||||
; /* We already issued a pedwarn. */
|
; /* We already issued a permerror. */
|
||||||
else if (decl && DECL_NAME (decl))
|
else if (decl && DECL_NAME (decl))
|
||||||
{
|
{
|
||||||
if (template_class_depth (current_class_type) == 0)
|
if (template_class_depth (current_class_type) == 0)
|
||||||
|
@ -9028,9 +9030,9 @@ grokdeclarator (const cp_declarator *declarator,
|
||||||
the rest of the compiler does not correctly
|
the rest of the compiler does not correctly
|
||||||
handle the initialization unless the member is
|
handle the initialization unless the member is
|
||||||
static so we make it static below. */
|
static so we make it static below. */
|
||||||
pedwarn ("ISO C++ forbids initialization of member %qD",
|
permerror ("ISO C++ forbids initialization of member %qD",
|
||||||
unqualified_id);
|
unqualified_id);
|
||||||
pedwarn ("making %qD static", unqualified_id);
|
permerror ("making %qD static", unqualified_id);
|
||||||
staticp = 1;
|
staticp = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9152,7 +9154,7 @@ grokdeclarator (const cp_declarator *declarator,
|
||||||
declaring main to be static. */
|
declaring main to be static. */
|
||||||
if (TREE_CODE (type) == METHOD_TYPE)
|
if (TREE_CODE (type) == METHOD_TYPE)
|
||||||
{
|
{
|
||||||
pedwarn ("cannot declare member function %qD to have "
|
permerror ("cannot declare member function %qD to have "
|
||||||
"static linkage", decl);
|
"static linkage", decl);
|
||||||
invalid_static = 1;
|
invalid_static = 1;
|
||||||
}
|
}
|
||||||
|
@ -9189,7 +9191,7 @@ grokdeclarator (const cp_declarator *declarator,
|
||||||
DECL_CONTEXT (decl) = ctype;
|
DECL_CONTEXT (decl) = ctype;
|
||||||
if (staticp == 1)
|
if (staticp == 1)
|
||||||
{
|
{
|
||||||
pedwarn ("%<static%> may not be used when defining "
|
permerror ("%<static%> may not be used when defining "
|
||||||
"(as opposed to declaring) a static data member");
|
"(as opposed to declaring) a static data member");
|
||||||
staticp = 0;
|
staticp = 0;
|
||||||
storage_class = sc_none;
|
storage_class = sc_none;
|
||||||
|
|
|
@ -716,7 +716,7 @@ finish_static_data_member_decl (tree decl,
|
||||||
VEC_safe_push (tree, gc, pending_statics, decl);
|
VEC_safe_push (tree, gc, pending_statics, decl);
|
||||||
|
|
||||||
if (LOCAL_CLASS_P (current_class_type))
|
if (LOCAL_CLASS_P (current_class_type))
|
||||||
pedwarn ("local class %q#T shall not have static data member %q#D",
|
permerror ("local class %q#T shall not have static data member %q#D",
|
||||||
current_class_type, decl);
|
current_class_type, decl);
|
||||||
|
|
||||||
/* Static consts need not be initialized in the class definition. */
|
/* Static consts need not be initialized in the class definition. */
|
||||||
|
@ -1233,15 +1233,15 @@ build_anon_union_vars (tree type, tree object)
|
||||||
continue;
|
continue;
|
||||||
if (TREE_CODE (field) != FIELD_DECL)
|
if (TREE_CODE (field) != FIELD_DECL)
|
||||||
{
|
{
|
||||||
pedwarn ("%q+#D invalid; an anonymous union can only "
|
permerror ("%q+#D invalid; an anonymous union can only "
|
||||||
"have non-static data members", field);
|
"have non-static data members", field);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TREE_PRIVATE (field))
|
if (TREE_PRIVATE (field))
|
||||||
pedwarn ("private member %q+#D in anonymous union", field);
|
permerror ("private member %q+#D in anonymous union", field);
|
||||||
else if (TREE_PROTECTED (field))
|
else if (TREE_PROTECTED (field))
|
||||||
pedwarn ("protected member %q+#D in anonymous union", field);
|
permerror ("protected member %q+#D in anonymous union", field);
|
||||||
|
|
||||||
if (processing_template_decl)
|
if (processing_template_decl)
|
||||||
ref = build_min_nt (COMPONENT_REF, object,
|
ref = build_min_nt (COMPONENT_REF, object,
|
||||||
|
@ -1376,7 +1376,7 @@ coerce_new_type (tree type)
|
||||||
e = 2;
|
e = 2;
|
||||||
|
|
||||||
if (e == 2)
|
if (e == 2)
|
||||||
pedwarn ("%<operator new%> takes type %<size_t%> (%qT) "
|
permerror ("%<operator new%> takes type %<size_t%> (%qT) "
|
||||||
"as first parameter", size_type_node);
|
"as first parameter", size_type_node);
|
||||||
|
|
||||||
switch (e)
|
switch (e)
|
||||||
|
|
|
@ -1015,7 +1015,7 @@ check_handlers (tree handlers)
|
||||||
if (tsi_end_p (i))
|
if (tsi_end_p (i))
|
||||||
break;
|
break;
|
||||||
if (TREE_TYPE (handler) == NULL_TREE)
|
if (TREE_TYPE (handler) == NULL_TREE)
|
||||||
pedwarn ("%H%<...%> handler must be the last handler for"
|
permerror ("%H%<...%> handler must be the last handler for"
|
||||||
" its try block", EXPR_LOCUS (handler));
|
" its try block", EXPR_LOCUS (handler));
|
||||||
else
|
else
|
||||||
check_handlers_1 (handler, i);
|
check_handlers_1 (handler, i);
|
||||||
|
|
|
@ -253,7 +253,7 @@ make_friend_class (tree type, tree friend_type, bool complain)
|
||||||
else if (same_type_p (type, friend_type))
|
else if (same_type_p (type, friend_type))
|
||||||
{
|
{
|
||||||
if (complain)
|
if (complain)
|
||||||
pedwarn ("class %qT is implicitly friends with itself",
|
warning (0, "class %qT is implicitly friends with itself",
|
||||||
type);
|
type);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -533,10 +533,10 @@ perform_member_init (tree member, tree init)
|
||||||
}
|
}
|
||||||
/* member traversal: note it leaves init NULL */
|
/* member traversal: note it leaves init NULL */
|
||||||
else if (TREE_CODE (type) == REFERENCE_TYPE)
|
else if (TREE_CODE (type) == REFERENCE_TYPE)
|
||||||
pedwarn ("%Juninitialized reference member %qD",
|
permerror ("%Juninitialized reference member %qD",
|
||||||
current_function_decl, member);
|
current_function_decl, member);
|
||||||
else if (CP_TYPE_CONST_P (type))
|
else if (CP_TYPE_CONST_P (type))
|
||||||
pedwarn ("%Juninitialized member %qD with %<const%> type %qT",
|
permerror ("%Juninitialized member %qD with %<const%> type %qT",
|
||||||
current_function_decl, member, type);
|
current_function_decl, member, type);
|
||||||
}
|
}
|
||||||
else if (TREE_CODE (init) == TREE_LIST)
|
else if (TREE_CODE (init) == TREE_LIST)
|
||||||
|
@ -2158,7 +2158,7 @@ build_new_1 (tree placement, tree type, tree nelts, tree init,
|
||||||
else if (init)
|
else if (init)
|
||||||
{
|
{
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ("ISO C++ forbids initialization in array new");
|
permerror ("ISO C++ forbids initialization in array new");
|
||||||
else
|
else
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
}
|
}
|
||||||
|
@ -2370,7 +2370,7 @@ build_new (tree placement, tree type, tree nelts, tree init,
|
||||||
if (!build_expr_type_conversion (WANT_INT | WANT_ENUM, nelts, false))
|
if (!build_expr_type_conversion (WANT_INT | WANT_ENUM, nelts, false))
|
||||||
{
|
{
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ("size in array new must have integral type");
|
permerror ("size in array new must have integral type");
|
||||||
else
|
else
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
}
|
}
|
||||||
|
|
|
@ -846,8 +846,8 @@ pushdecl_maybe_friend (tree x, bool is_friend)
|
||||||
&& TREE_CODE (decl) == TREE_CODE (x)
|
&& TREE_CODE (decl) == TREE_CODE (x)
|
||||||
&& !same_type_p (TREE_TYPE (x), TREE_TYPE (decl)))
|
&& !same_type_p (TREE_TYPE (x), TREE_TYPE (decl)))
|
||||||
{
|
{
|
||||||
pedwarn ("type mismatch with previous external decl of %q#D", x);
|
permerror ("type mismatch with previous external decl of %q#D", x);
|
||||||
pedwarn ("previous external decl of %q+#D", decl);
|
permerror ("previous external decl of %q+#D", decl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1165,7 +1165,7 @@ check_for_out_of_scope_variable (tree decl)
|
||||||
|
|
||||||
if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl)))
|
if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl)))
|
||||||
{
|
{
|
||||||
error ("name lookup of %qD changed for new ISO %<for%> scoping",
|
error ("name lookup of %qD changed for ISO %<for%> scoping",
|
||||||
DECL_NAME (decl));
|
DECL_NAME (decl));
|
||||||
error (" cannot use obsolete binding at %q+D because "
|
error (" cannot use obsolete binding at %q+D because "
|
||||||
"it has a destructor", decl);
|
"it has a destructor", decl);
|
||||||
|
@ -1173,9 +1173,19 @@ check_for_out_of_scope_variable (tree decl)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pedwarn ("name lookup of %qD changed for new ISO %<for%> scoping",
|
permerror ("name lookup of %qD changed for ISO %<for%> scoping",
|
||||||
DECL_NAME (decl));
|
DECL_NAME (decl));
|
||||||
pedwarn (" using obsolete binding at %q+D", decl);
|
if (flag_permissive)
|
||||||
|
permerror (" using obsolete binding at %q+D", decl);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
static bool hint;
|
||||||
|
if (!hint)
|
||||||
|
{
|
||||||
|
inform ("(if you use %<-fpermissive%> G++ will accept your code)");
|
||||||
|
hint = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return decl;
|
return decl;
|
||||||
|
|
|
@ -4111,7 +4111,7 @@ cp_parser_nested_name_specifier_opt (cp_parser *parser,
|
||||||
&& !(TREE_CODE (new_scope) == TYPENAME_TYPE
|
&& !(TREE_CODE (new_scope) == TYPENAME_TYPE
|
||||||
&& (TREE_CODE (TYPENAME_TYPE_FULLNAME (new_scope))
|
&& (TREE_CODE (TYPENAME_TYPE_FULLNAME (new_scope))
|
||||||
== TEMPLATE_ID_EXPR)))
|
== TEMPLATE_ID_EXPR)))
|
||||||
pedwarn (TYPE_P (new_scope)
|
permerror (TYPE_P (new_scope)
|
||||||
? "%qT is not a template"
|
? "%qT is not a template"
|
||||||
: "%qD is not a template",
|
: "%qD is not a template",
|
||||||
new_scope);
|
new_scope);
|
||||||
|
@ -8928,7 +8928,7 @@ cp_parser_mem_initializer (cp_parser* parser)
|
||||||
/* Find out what is being initialized. */
|
/* Find out what is being initialized. */
|
||||||
if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN))
|
if (cp_lexer_next_token_is (parser->lexer, CPP_OPEN_PAREN))
|
||||||
{
|
{
|
||||||
pedwarn ("anachronistic old-style base class initializer");
|
permerror ("anachronistic old-style base class initializer");
|
||||||
mem_initializer_id = NULL_TREE;
|
mem_initializer_id = NULL_TREE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -9845,7 +9845,7 @@ cp_parser_template_id (cp_parser *parser,
|
||||||
static bool hint;
|
static bool hint;
|
||||||
if (!hint)
|
if (!hint)
|
||||||
{
|
{
|
||||||
inform ("(if you use -fpermissive G++ will accept your code)");
|
inform ("(if you use %<-fpermissive%> G++ will accept your code)");
|
||||||
hint = true;
|
hint = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11186,7 +11186,7 @@ cp_parser_elaborated_type_specifier (cp_parser* parser,
|
||||||
tag_type = typename_type;
|
tag_type = typename_type;
|
||||||
/* The `typename' keyword is only allowed in templates. */
|
/* The `typename' keyword is only allowed in templates. */
|
||||||
if (!processing_template_decl)
|
if (!processing_template_decl)
|
||||||
pedwarn ("using %<typename%> outside of template");
|
permerror ("using %<typename%> outside of template");
|
||||||
}
|
}
|
||||||
/* Otherwise it must be a class-key. */
|
/* Otherwise it must be a class-key. */
|
||||||
else
|
else
|
||||||
|
@ -13865,7 +13865,7 @@ cp_parser_parameter_declaration (cp_parser *parser,
|
||||||
|
|
||||||
if (!parser->default_arg_ok_p)
|
if (!parser->default_arg_ok_p)
|
||||||
{
|
{
|
||||||
if (!flag_pedantic_errors)
|
if (flag_permissive)
|
||||||
warning (0, "deprecated use of default argument for parameter of non-function");
|
warning (0, "deprecated use of default argument for parameter of non-function");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -14758,7 +14758,7 @@ cp_parser_class_head (cp_parser* parser,
|
||||||
class member of a namespace outside of its namespace. */
|
class member of a namespace outside of its namespace. */
|
||||||
if (scope == nested_name_specifier)
|
if (scope == nested_name_specifier)
|
||||||
{
|
{
|
||||||
pedwarn ("extra qualification ignored");
|
permerror ("extra qualification not allowed");
|
||||||
nested_name_specifier = NULL_TREE;
|
nested_name_specifier = NULL_TREE;
|
||||||
num_templates = 0;
|
num_templates = 0;
|
||||||
}
|
}
|
||||||
|
@ -18121,7 +18121,7 @@ static void
|
||||||
cp_parser_check_class_key (enum tag_types class_key, tree type)
|
cp_parser_check_class_key (enum tag_types class_key, tree type)
|
||||||
{
|
{
|
||||||
if ((TREE_CODE (type) == UNION_TYPE) != (class_key == union_type))
|
if ((TREE_CODE (type) == UNION_TYPE) != (class_key == union_type))
|
||||||
pedwarn ("%qs tag used in naming %q#T",
|
permerror ("%qs tag used in naming %q#T",
|
||||||
class_key == union_type ? "union"
|
class_key == union_type ? "union"
|
||||||
: class_key == record_type ? "struct" : "class",
|
: class_key == record_type ? "struct" : "class",
|
||||||
type);
|
type);
|
||||||
|
|
22
gcc/cp/pt.c
22
gcc/cp/pt.c
|
@ -710,8 +710,8 @@ check_specialization_namespace (tree tmpl)
|
||||||
return true;
|
return true;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pedwarn ("specialization of %qD in different namespace", tmpl);
|
permerror ("specialization of %qD in different namespace", tmpl);
|
||||||
pedwarn (" from definition of %q+#D", tmpl);
|
permerror (" from definition of %q+#D", tmpl);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -728,7 +728,7 @@ check_explicit_instantiation_namespace (tree spec)
|
||||||
namespace of its template. */
|
namespace of its template. */
|
||||||
ns = decl_namespace_context (spec);
|
ns = decl_namespace_context (spec);
|
||||||
if (!is_ancestor (current_namespace, ns))
|
if (!is_ancestor (current_namespace, ns))
|
||||||
pedwarn ("explicit instantiation of %qD in namespace %qD "
|
permerror ("explicit instantiation of %qD in namespace %qD "
|
||||||
"(which does not enclose namespace %qD)",
|
"(which does not enclose namespace %qD)",
|
||||||
spec, current_namespace, ns);
|
spec, current_namespace, ns);
|
||||||
}
|
}
|
||||||
|
@ -811,8 +811,8 @@ maybe_process_partial_specialization (tree type)
|
||||||
if (current_namespace
|
if (current_namespace
|
||||||
!= decl_namespace_context (CLASSTYPE_TI_TEMPLATE (type)))
|
!= decl_namespace_context (CLASSTYPE_TI_TEMPLATE (type)))
|
||||||
{
|
{
|
||||||
pedwarn ("specializing %q#T in different namespace", type);
|
permerror ("specializing %q#T in different namespace", type);
|
||||||
pedwarn (" from definition of %q+#D",
|
permerror (" from definition of %q+#D",
|
||||||
CLASSTYPE_TI_TEMPLATE (type));
|
CLASSTYPE_TI_TEMPLATE (type));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2006,7 +2006,7 @@ check_explicit_specialization (tree declarator,
|
||||||
for (; t; t = TREE_CHAIN (t))
|
for (; t; t = TREE_CHAIN (t))
|
||||||
if (TREE_PURPOSE (t))
|
if (TREE_PURPOSE (t))
|
||||||
{
|
{
|
||||||
pedwarn
|
permerror
|
||||||
("default argument specified in explicit specialization");
|
("default argument specified in explicit specialization");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -4942,7 +4942,7 @@ convert_template_argument (tree parm,
|
||||||
if (requires_type && ! is_type && TREE_CODE (arg) == SCOPE_REF
|
if (requires_type && ! is_type && TREE_CODE (arg) == SCOPE_REF
|
||||||
&& TREE_CODE (TREE_OPERAND (arg, 0)) == TEMPLATE_TYPE_PARM)
|
&& TREE_CODE (TREE_OPERAND (arg, 0)) == TEMPLATE_TYPE_PARM)
|
||||||
{
|
{
|
||||||
pedwarn ("to refer to a type member of a template parameter, "
|
permerror ("to refer to a type member of a template parameter, "
|
||||||
"use %<typename %E%>", orig_arg);
|
"use %<typename %E%>", orig_arg);
|
||||||
|
|
||||||
orig_arg = make_typename_type (TREE_OPERAND (arg, 0),
|
orig_arg = make_typename_type (TREE_OPERAND (arg, 0),
|
||||||
|
@ -14567,7 +14567,7 @@ do_decl_instantiation (tree decl, tree storage)
|
||||||
the first instantiation was `extern' and the second is not,
|
the first instantiation was `extern' and the second is not,
|
||||||
and EXTERN_P for the opposite case. */
|
and EXTERN_P for the opposite case. */
|
||||||
if (DECL_NOT_REALLY_EXTERN (result) && !extern_p)
|
if (DECL_NOT_REALLY_EXTERN (result) && !extern_p)
|
||||||
pedwarn ("duplicate explicit instantiation of %q#D", result);
|
permerror ("duplicate explicit instantiation of %q#D", result);
|
||||||
/* If an "extern" explicit instantiation follows an ordinary
|
/* If an "extern" explicit instantiation follows an ordinary
|
||||||
explicit instantiation, the template is instantiated. */
|
explicit instantiation, the template is instantiated. */
|
||||||
if (extern_p)
|
if (extern_p)
|
||||||
|
@ -14580,7 +14580,7 @@ do_decl_instantiation (tree decl, tree storage)
|
||||||
}
|
}
|
||||||
else if (!DECL_TEMPLATE_INFO (result))
|
else if (!DECL_TEMPLATE_INFO (result))
|
||||||
{
|
{
|
||||||
pedwarn ("explicit instantiation of non-template %q#D", result);
|
permerror ("explicit instantiation of non-template %q#D", result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14721,7 +14721,7 @@ do_type_instantiation (tree t, tree storage, tsubst_flags_t complain)
|
||||||
|
|
||||||
if (!previous_instantiation_extern_p && !extern_p
|
if (!previous_instantiation_extern_p && !extern_p
|
||||||
&& (complain & tf_error))
|
&& (complain & tf_error))
|
||||||
pedwarn ("duplicate explicit instantiation of %q#T", t);
|
permerror ("duplicate explicit instantiation of %q#T", t);
|
||||||
|
|
||||||
/* If we've already instantiated the template, just return now. */
|
/* If we've already instantiated the template, just return now. */
|
||||||
if (!CLASSTYPE_INTERFACE_ONLY (t))
|
if (!CLASSTYPE_INTERFACE_ONLY (t))
|
||||||
|
@ -15168,7 +15168,7 @@ instantiate_decl (tree d, int defer_ok,
|
||||||
member function or static data member of a class template
|
member function or static data member of a class template
|
||||||
shall be present in every translation unit in which it is
|
shall be present in every translation unit in which it is
|
||||||
explicitly instantiated. */
|
explicitly instantiated. */
|
||||||
pedwarn
|
permerror
|
||||||
("explicit instantiation of %qD but no definition available", d);
|
("explicit instantiation of %qD but no definition available", d);
|
||||||
|
|
||||||
/* ??? Historically, we have instantiated inline functions, even
|
/* ??? Historically, we have instantiated inline functions, even
|
||||||
|
|
|
@ -2170,7 +2170,7 @@ finish_template_type_parm (tree aggr, tree identifier)
|
||||||
{
|
{
|
||||||
if (aggr != class_type_node)
|
if (aggr != class_type_node)
|
||||||
{
|
{
|
||||||
pedwarn ("template type parameters must use the keyword %<class%> or %<typename%>");
|
permerror ("template type parameters must use the keyword %<class%> or %<typename%>");
|
||||||
aggr = class_type_node;
|
aggr = class_type_node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -435,7 +435,7 @@ composite_pointer_type_r (tree t1, tree t2, const char* location,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ("%s between distinct pointer types %qT and %qT "
|
permerror ("%s between distinct pointer types %qT and %qT "
|
||||||
"lacks a cast",
|
"lacks a cast",
|
||||||
location, t1, t2);
|
location, t1, t2);
|
||||||
result_type = void_type_node;
|
result_type = void_type_node;
|
||||||
|
@ -450,7 +450,7 @@ composite_pointer_type_r (tree t1, tree t2, const char* location,
|
||||||
if (!same_type_p (TYPE_PTRMEM_CLASS_TYPE (t1),
|
if (!same_type_p (TYPE_PTRMEM_CLASS_TYPE (t1),
|
||||||
TYPE_PTRMEM_CLASS_TYPE (t2))
|
TYPE_PTRMEM_CLASS_TYPE (t2))
|
||||||
&& (complain & tf_error))
|
&& (complain & tf_error))
|
||||||
pedwarn ("%s between distinct pointer types %qT and %qT "
|
permerror ("%s between distinct pointer types %qT and %qT "
|
||||||
"lacks a cast",
|
"lacks a cast",
|
||||||
location, t1, t2);
|
location, t1, t2);
|
||||||
result_type = build_ptrmem_type (TYPE_PTRMEM_CLASS_TYPE (t1),
|
result_type = build_ptrmem_type (TYPE_PTRMEM_CLASS_TYPE (t1),
|
||||||
|
@ -1355,7 +1355,7 @@ cxx_sizeof_expr (tree e, tsubst_flags_t complain)
|
||||||
else if (is_overloaded_fn (e))
|
else if (is_overloaded_fn (e))
|
||||||
{
|
{
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ("ISO C++ forbids applying %<sizeof%> to an expression of "
|
permerror ("ISO C++ forbids applying %<sizeof%> to an expression of "
|
||||||
"function type");
|
"function type");
|
||||||
else
|
else
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
|
@ -1415,7 +1415,7 @@ cxx_alignof_expr (tree e, tsubst_flags_t complain)
|
||||||
else if (is_overloaded_fn (e))
|
else if (is_overloaded_fn (e))
|
||||||
{
|
{
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ("ISO C++ forbids applying %<__alignof%> to an expression of "
|
permerror ("ISO C++ forbids applying %<__alignof%> to an expression of "
|
||||||
"function type");
|
"function type");
|
||||||
else
|
else
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
|
@ -2146,7 +2146,7 @@ check_template_keyword (tree decl)
|
||||||
&& TREE_CODE (decl) != TEMPLATE_ID_EXPR)
|
&& TREE_CODE (decl) != TEMPLATE_ID_EXPR)
|
||||||
{
|
{
|
||||||
if (!is_overloaded_fn (decl))
|
if (!is_overloaded_fn (decl))
|
||||||
pedwarn ("%qD is not a template", decl);
|
permerror ("%qD is not a template", decl);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tree fns;
|
tree fns;
|
||||||
|
@ -2166,7 +2166,7 @@ check_template_keyword (tree decl)
|
||||||
fns = OVL_NEXT (fns);
|
fns = OVL_NEXT (fns);
|
||||||
}
|
}
|
||||||
if (!fns)
|
if (!fns)
|
||||||
pedwarn ("%qD is not a template", decl);
|
permerror ("%qD is not a template", decl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3258,7 +3258,7 @@ cp_build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
|
||||||
if (t != error_mark_node)
|
if (t != error_mark_node)
|
||||||
{
|
{
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ("assuming cast to type %qT from overloaded function",
|
permerror ("assuming cast to type %qT from overloaded function",
|
||||||
TREE_TYPE (t));
|
TREE_TYPE (t));
|
||||||
op0 = t;
|
op0 = t;
|
||||||
}
|
}
|
||||||
|
@ -3269,7 +3269,7 @@ cp_build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
|
||||||
if (t != error_mark_node)
|
if (t != error_mark_node)
|
||||||
{
|
{
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ("assuming cast to type %qT from overloaded function",
|
permerror ("assuming cast to type %qT from overloaded function",
|
||||||
TREE_TYPE (t));
|
TREE_TYPE (t));
|
||||||
op1 = t;
|
op1 = t;
|
||||||
}
|
}
|
||||||
|
@ -3544,7 +3544,7 @@ cp_build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
|
||||||
{
|
{
|
||||||
result_type = type0;
|
result_type = type0;
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ("ISO C++ forbids comparison between pointer and integer");
|
permerror ("ISO C++ forbids comparison between pointer and integer");
|
||||||
else
|
else
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
}
|
}
|
||||||
|
@ -3552,7 +3552,7 @@ cp_build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
|
||||||
{
|
{
|
||||||
result_type = type1;
|
result_type = type1;
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ("ISO C++ forbids comparison between pointer and integer");
|
permerror ("ISO C++ forbids comparison between pointer and integer");
|
||||||
else
|
else
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
}
|
}
|
||||||
|
@ -3732,7 +3732,7 @@ cp_build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
|
||||||
{
|
{
|
||||||
result_type = type0;
|
result_type = type0;
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ("ISO C++ forbids comparison between pointer and integer");
|
permerror ("ISO C++ forbids comparison between pointer and integer");
|
||||||
else
|
else
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
}
|
}
|
||||||
|
@ -3740,7 +3740,7 @@ cp_build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
|
||||||
{
|
{
|
||||||
result_type = type1;
|
result_type = type1;
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ("ISO C++ forbids comparison between pointer and integer");
|
permerror ("ISO C++ forbids comparison between pointer and integer");
|
||||||
else
|
else
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
}
|
}
|
||||||
|
@ -4111,11 +4111,11 @@ pointer_diff (tree op0, tree op1, tree ptrtype)
|
||||||
if (pedantic || warn_pointer_arith)
|
if (pedantic || warn_pointer_arith)
|
||||||
{
|
{
|
||||||
if (TREE_CODE (target_type) == VOID_TYPE)
|
if (TREE_CODE (target_type) == VOID_TYPE)
|
||||||
pedwarn ("ISO C++ forbids using pointer of type %<void *%> in subtraction");
|
permerror ("ISO C++ forbids using pointer of type %<void *%> in subtraction");
|
||||||
if (TREE_CODE (target_type) == FUNCTION_TYPE)
|
if (TREE_CODE (target_type) == FUNCTION_TYPE)
|
||||||
pedwarn ("ISO C++ forbids using pointer to a function in subtraction");
|
permerror ("ISO C++ forbids using pointer to a function in subtraction");
|
||||||
if (TREE_CODE (target_type) == METHOD_TYPE)
|
if (TREE_CODE (target_type) == METHOD_TYPE)
|
||||||
pedwarn ("ISO C++ forbids using pointer to a method in subtraction");
|
permerror ("ISO C++ forbids using pointer to a method in subtraction");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* First do the subtraction as integers;
|
/* First do the subtraction as integers;
|
||||||
|
@ -4481,7 +4481,7 @@ cp_build_unary_op (enum tree_code code, tree xarg, int noconvert,
|
||||||
if (TREE_CODE (argtype) == ENUMERAL_TYPE)
|
if (TREE_CODE (argtype) == ENUMERAL_TYPE)
|
||||||
{
|
{
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ((code == PREINCREMENT_EXPR || code == POSTINCREMENT_EXPR)
|
permerror ((code == PREINCREMENT_EXPR || code == POSTINCREMENT_EXPR)
|
||||||
? G_("ISO C++ forbids incrementing an enum")
|
? G_("ISO C++ forbids incrementing an enum")
|
||||||
: G_("ISO C++ forbids decrementing an enum"));
|
: G_("ISO C++ forbids decrementing an enum"));
|
||||||
else
|
else
|
||||||
|
@ -4509,7 +4509,7 @@ cp_build_unary_op (enum tree_code code, tree xarg, int noconvert,
|
||||||
&& !TYPE_PTROB_P (argtype))
|
&& !TYPE_PTROB_P (argtype))
|
||||||
{
|
{
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ((code == PREINCREMENT_EXPR
|
permerror ((code == PREINCREMENT_EXPR
|
||||||
|| code == POSTINCREMENT_EXPR)
|
|| code == POSTINCREMENT_EXPR)
|
||||||
? G_("ISO C++ forbids incrementing a pointer of type %qT")
|
? G_("ISO C++ forbids incrementing a pointer of type %qT")
|
||||||
: G_("ISO C++ forbids decrementing a pointer of type %qT"),
|
: G_("ISO C++ forbids decrementing a pointer of type %qT"),
|
||||||
|
@ -4570,7 +4570,7 @@ cp_build_unary_op (enum tree_code code, tree xarg, int noconvert,
|
||||||
{
|
{
|
||||||
/* ARM $3.4 */
|
/* ARM $3.4 */
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ("ISO C++ forbids taking address of function %<::main%>");
|
permerror ("ISO C++ forbids taking address of function %<::main%>");
|
||||||
else
|
else
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
}
|
}
|
||||||
|
@ -4631,12 +4631,12 @@ cp_build_unary_op (enum tree_code code, tree xarg, int noconvert,
|
||||||
else if (current_class_type
|
else if (current_class_type
|
||||||
&& TREE_OPERAND (arg, 0) == current_class_ref)
|
&& TREE_OPERAND (arg, 0) == current_class_ref)
|
||||||
/* An expression like &memfn. */
|
/* An expression like &memfn. */
|
||||||
pedwarn ("ISO C++ forbids taking the address of an unqualified"
|
permerror ("ISO C++ forbids taking the address of an unqualified"
|
||||||
" or parenthesized non-static member function to form"
|
" or parenthesized non-static member function to form"
|
||||||
" a pointer to member function. Say %<&%T::%D%>",
|
" a pointer to member function. Say %<&%T::%D%>",
|
||||||
base, name);
|
base, name);
|
||||||
else
|
else
|
||||||
pedwarn ("ISO C++ forbids taking the address of a bound member"
|
permerror ("ISO C++ forbids taking the address of a bound member"
|
||||||
" function to form a pointer to member function."
|
" function to form a pointer to member function."
|
||||||
" Say %<&%T::%D%>",
|
" Say %<&%T::%D%>",
|
||||||
base, name);
|
base, name);
|
||||||
|
@ -4665,7 +4665,7 @@ cp_build_unary_op (enum tree_code code, tree xarg, int noconvert,
|
||||||
if (! lvalue_p (arg) && (pedantic || complain == tf_none))
|
if (! lvalue_p (arg) && (pedantic || complain == tf_none))
|
||||||
{
|
{
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ("ISO C++ forbids taking the address of a cast to a non-lvalue expression");
|
permerror ("ISO C++ forbids taking the address of a cast to a non-lvalue expression");
|
||||||
else
|
else
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
}
|
}
|
||||||
|
@ -5010,7 +5010,7 @@ tree build_x_compound_expr_from_list (tree list, const char *msg)
|
||||||
if (TREE_CHAIN (list))
|
if (TREE_CHAIN (list))
|
||||||
{
|
{
|
||||||
if (msg)
|
if (msg)
|
||||||
pedwarn ("%s expression list treated as compound expression", msg);
|
permerror ("%s expression list treated as compound expression", msg);
|
||||||
|
|
||||||
for (list = TREE_CHAIN (list); list; list = TREE_CHAIN (list))
|
for (list = TREE_CHAIN (list); list; list = TREE_CHAIN (list))
|
||||||
expr = build_x_compound_expr (expr, TREE_VALUE (list),
|
expr = build_x_compound_expr (expr, TREE_VALUE (list),
|
||||||
|
@ -5561,7 +5561,7 @@ build_reinterpret_cast_1 (tree type, tree expr, bool c_cast_p,
|
||||||
if (TYPE_PRECISION (type) < TYPE_PRECISION (intype))
|
if (TYPE_PRECISION (type) < TYPE_PRECISION (intype))
|
||||||
{
|
{
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ("cast from %qT to %qT loses precision",
|
permerror ("cast from %qT to %qT loses precision",
|
||||||
intype, type);
|
intype, type);
|
||||||
else
|
else
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
|
@ -5838,7 +5838,7 @@ cp_build_c_cast (tree type, tree expr, tsubst_flags_t complain)
|
||||||
if (TREE_CODE (TREE_TYPE (expr)) == POINTER_TYPE)
|
if (TREE_CODE (TREE_TYPE (expr)) == POINTER_TYPE)
|
||||||
{
|
{
|
||||||
if (complain & tf_error)
|
if (complain & tf_error)
|
||||||
pedwarn ("ISO C++ forbids casting to an array type %qT", type);
|
permerror ("ISO C++ forbids casting to an array type %qT", type);
|
||||||
else
|
else
|
||||||
return error_mark_node;
|
return error_mark_node;
|
||||||
type = build_pointer_type (TREE_TYPE (type));
|
type = build_pointer_type (TREE_TYPE (type));
|
||||||
|
@ -6964,7 +6964,7 @@ check_return_expr (tree retval, bool *no_warning)
|
||||||
that's supposed to return a value. */
|
that's supposed to return a value. */
|
||||||
if (!retval && fn_returns_value_p)
|
if (!retval && fn_returns_value_p)
|
||||||
{
|
{
|
||||||
pedwarn ("return-statement with no value, in function returning %qT",
|
permerror ("return-statement with no value, in function returning %qT",
|
||||||
valtype);
|
valtype);
|
||||||
/* Clear this, so finish_function won't say that we reach the
|
/* Clear this, so finish_function won't say that we reach the
|
||||||
end of a non-void function (which we don't, we gave a
|
end of a non-void function (which we don't, we gave a
|
||||||
|
@ -6985,7 +6985,7 @@ check_return_expr (tree retval, bool *no_warning)
|
||||||
its side-effects. */
|
its side-effects. */
|
||||||
finish_expr_stmt (retval);
|
finish_expr_stmt (retval);
|
||||||
else
|
else
|
||||||
pedwarn ("return-statement with a value, in function "
|
permerror ("return-statement with a value, in function "
|
||||||
"returning 'void'");
|
"returning 'void'");
|
||||||
|
|
||||||
current_function_returns_null = 1;
|
current_function_returns_null = 1;
|
||||||
|
|
|
@ -694,7 +694,7 @@ digest_init (tree type, tree init)
|
||||||
counted in the length of the constant, but in C++ this would
|
counted in the length of the constant, but in C++ this would
|
||||||
be invalid. */
|
be invalid. */
|
||||||
if (size < TREE_STRING_LENGTH (init))
|
if (size < TREE_STRING_LENGTH (init))
|
||||||
pedwarn ("initializer-string for array of chars is too long");
|
permerror ("initializer-string for array of chars is too long");
|
||||||
}
|
}
|
||||||
return init;
|
return init;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue