summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>2016-07-20 13:42:51 +0000
committerdmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>2016-07-20 13:42:51 +0000
commitd208f6e63a7ae80cdaf89b492b1c4f98a996cd4f (patch)
tree9b8be09a9ce188671750b4f8e76df99ec445a22c
parenta91a5f8acc4656223b100e1aa1a4496ce9bb7562 (diff)
downloadgcc-d208f6e63a7ae80cdaf89b492b1c4f98a996cd4f.tar.gz
C: convert return type of lookup_name_fuzzy from tree to const char *
gcc/c-family/ChangeLog: * c-common.h (lookup_name_fuzzy): Convert return type from tree to const char *. gcc/c/ChangeLog: * c-decl.c (implicit_decl_warning): Update for conversion of return type of lookup_name_fuzzy to const char *. (undeclared_variable): Likewise. (lookup_name_fuzzy): Convert return type from tree to const char *. * c-parser.c (c_parser_declaration_or_fndef): Update for conversion of return type of lookup_name_fuzzy to const char *. (c_parser_parameter_declaration): Likewise. gcc/ChangeLog: * gcc-rich-location.c (gcc_rich_location::add_fixit_misspelled_id): New overload, taking a const char *. * gcc-rich-location.h (gcc_rich_location::add_fixit_misspelled_id): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238517 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/c-family/ChangeLog5
-rw-r--r--gcc/c-family/c-common.h2
-rw-r--r--gcc/c/ChangeLog11
-rw-r--r--gcc/c/c-decl.c22
-rw-r--r--gcc/c/c-parser.c10
-rw-r--r--gcc/gcc-rich-location.c13
-rw-r--r--gcc/gcc-rich-location.h2
8 files changed, 58 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8cafd56b5b2..82eb3ccb396 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2016-07-20 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc-rich-location.c
+ (gcc_rich_location::add_fixit_misspelled_id): New overload, taking
+ a const char *.
+ * gcc-rich-location.h
+ (gcc_rich_location::add_fixit_misspelled_id): Likewise.
+
2016-07-20 Georg-Johann Lay <avr@gjlay.de>
* target.def (addr_space): Add new diagnose_usage to hook vector.
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 1376a39427f..3842929d32c 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2016-07-20 David Malcolm <dmalcolm@redhat.com>
+
+ * c-common.h (lookup_name_fuzzy): Convert return type from tree to
+ const char *.
+
2016-07-15 Jason Merrill <jason@redhat.com>
* c-opts.c (c_common_post_options): Update -fabi-version default to 11.
diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h
index 0f068e6b556..8c80574a146 100644
--- a/gcc/c-family/c-common.h
+++ b/gcc/c-family/c-common.h
@@ -1000,7 +1000,7 @@ enum lookup_name_fuzzy_kind {
/* Any name. */
FUZZY_LOOKUP_NAME
};
-extern tree lookup_name_fuzzy (tree, enum lookup_name_fuzzy_kind);
+extern const char *lookup_name_fuzzy (tree, enum lookup_name_fuzzy_kind);
extern bool vector_targets_convertible_p (const_tree t1, const_tree t2);
extern bool vector_types_convertible_p (const_tree t1, const_tree t2, bool emit_lax_note);
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index bc1e9558774..d322761e87b 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,14 @@
+2016-07-20 David Malcolm <dmalcolm@redhat.com>
+
+ * c-decl.c (implicit_decl_warning): Update for conversion of
+ return type of lookup_name_fuzzy to const char *.
+ (undeclared_variable): Likewise.
+ (lookup_name_fuzzy): Convert return type from tree to
+ const char *.
+ * c-parser.c (c_parser_declaration_or_fndef): Update for
+ conversion of return type of lookup_name_fuzzy to const char *.
+ (c_parser_parameter_declaration): Likewise.
+
2016-07-15 Cesar Philippidis <cesar@codesourcery.com>
* c-parser.c (c_parser_oacc_declare): Don't scan for
diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c
index 955c0e8da73..d9f2dd752da 100644
--- a/gcc/c/c-decl.c
+++ b/gcc/c/c-decl.c
@@ -3088,7 +3088,7 @@ implicit_decl_warning (location_t loc, tree id, tree olddecl)
if (warn_implicit_function_declaration)
{
bool warned;
- tree hint = NULL_TREE;
+ const char *hint = NULL;
if (!olddecl)
hint = lookup_name_fuzzy (id, FUZZY_LOOKUP_FUNCTION_NAME);
@@ -3099,7 +3099,7 @@ implicit_decl_warning (location_t loc, tree id, tree olddecl)
richloc.add_fixit_misspelled_id (loc, hint);
warned = pedwarn_at_rich_loc
(&richloc, OPT_Wimplicit_function_declaration,
- "implicit declaration of function %qE; did you mean %qE?",
+ "implicit declaration of function %qE; did you mean %qs?",
id, hint);
}
else
@@ -3112,7 +3112,7 @@ implicit_decl_warning (location_t loc, tree id, tree olddecl)
richloc.add_fixit_misspelled_id (loc, hint);
warned = warning_at_rich_loc
(&richloc, OPT_Wimplicit_function_declaration,
- G_("implicit declaration of function %qE;did you mean %qE?"),
+ G_("implicit declaration of function %qE;did you mean %qs?"),
id, hint);
}
else
@@ -3433,14 +3433,14 @@ undeclared_variable (location_t loc, tree id)
if (current_function_decl == 0)
{
- tree guessed_id = lookup_name_fuzzy (id, FUZZY_LOOKUP_NAME);
+ const char *guessed_id = lookup_name_fuzzy (id, FUZZY_LOOKUP_NAME);
if (guessed_id)
{
gcc_rich_location richloc (loc);
richloc.add_fixit_misspelled_id (loc, guessed_id);
error_at_rich_loc (&richloc,
"%qE undeclared here (not in a function);"
- " did you mean %qE?",
+ " did you mean %qs?",
id, guessed_id);
}
else
@@ -3451,7 +3451,7 @@ undeclared_variable (location_t loc, tree id)
{
if (!objc_diagnose_private_ivar (id))
{
- tree guessed_id = lookup_name_fuzzy (id, FUZZY_LOOKUP_NAME);
+ const char *guessed_id = lookup_name_fuzzy (id, FUZZY_LOOKUP_NAME);
if (guessed_id)
{
gcc_rich_location richloc (loc);
@@ -3459,7 +3459,7 @@ undeclared_variable (location_t loc, tree id)
error_at_rich_loc
(&richloc,
"%qE undeclared (first use in this function);"
- " did you mean %qE?",
+ " did you mean %qs?",
id, guessed_id);
}
else
@@ -4010,7 +4010,7 @@ find_closest_macro_cpp_cb (cpp_reader *, cpp_hashnode *hashnode,
It also looks for start_typename keywords, to detect "singed" vs "signed"
typos. */
-tree
+const char *
lookup_name_fuzzy (tree name, enum lookup_name_fuzzy_kind kind)
{
gcc_assert (TREE_CODE (name) == IDENTIFIER_NODE);
@@ -4100,7 +4100,11 @@ lookup_name_fuzzy (tree name, enum lookup_name_fuzzy_kind kind)
}
}
- return bm.get_best_meaningful_candidate ();
+ tree best = bm.get_best_meaningful_candidate ();
+ if (best)
+ return IDENTIFIER_POINTER (best);
+ else
+ return NULL;
}
diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
index 45e32ba49d4..8952bca363a 100644
--- a/gcc/c/c-parser.c
+++ b/gcc/c/c-parser.c
@@ -1698,12 +1698,12 @@ c_parser_declaration_or_fndef (c_parser *parser, bool fndef_ok,
}
else
{
- tree hint = lookup_name_fuzzy (name, FUZZY_LOOKUP_TYPENAME);
+ const char *hint = lookup_name_fuzzy (name, FUZZY_LOOKUP_TYPENAME);
if (hint)
{
richloc.add_fixit_misspelled_id (here, hint);
error_at_rich_loc (&richloc,
- "unknown type name %qE; did you mean %qE?",
+ "unknown type name %qE; did you mean %qs?",
name, hint);
}
else
@@ -3853,14 +3853,14 @@ c_parser_parameter_declaration (c_parser *parser, tree attrs)
c_parser_set_source_position_from_token (token);
if (c_parser_next_tokens_start_typename (parser, cla_prefer_type))
{
- tree hint = lookup_name_fuzzy (token->value, FUZZY_LOOKUP_TYPENAME);
+ const char *hint = lookup_name_fuzzy (token->value,
+ FUZZY_LOOKUP_TYPENAME);
if (hint)
{
- gcc_assert (TREE_CODE (hint) == IDENTIFIER_NODE);
gcc_rich_location richloc (token->location);
richloc.add_fixit_misspelled_id (token->location, hint);
error_at_rich_loc (&richloc,
- "unknown type name %qE; did you mean %qE?",
+ "unknown type name %qE; did you mean %qs?",
token->value, hint);
}
else
diff --git a/gcc/gcc-rich-location.c b/gcc/gcc-rich-location.c
index 15c0700a25b..09475ffc2cf 100644
--- a/gcc/gcc-rich-location.c
+++ b/gcc/gcc-rich-location.c
@@ -74,3 +74,16 @@ gcc_rich_location::add_fixit_misspelled_id (location_t misspelled_token_loc,
= get_range_from_loc (line_table, misspelled_token_loc);
add_fixit_replace (misspelled_token_range, IDENTIFIER_POINTER (hint_id));
}
+
+/* As above, but with a const char * for the suggested replacement. */
+
+void
+gcc_rich_location::add_fixit_misspelled_id (location_t misspelled_token_loc,
+ const char *hint)
+{
+ gcc_assert (hint);
+
+ source_range misspelled_token_range
+ = get_range_from_loc (line_table, misspelled_token_loc);
+ add_fixit_replace (misspelled_token_range, hint);
+}
diff --git a/gcc/gcc-rich-location.h b/gcc/gcc-rich-location.h
index 9c8a7904c15..aa69b2eff14 100644
--- a/gcc/gcc-rich-location.h
+++ b/gcc/gcc-rich-location.h
@@ -45,6 +45,8 @@ class gcc_rich_location : public rich_location
void add_fixit_misspelled_id (location_t misspelled_token_loc,
tree hint_id);
+ void add_fixit_misspelled_id (location_t misspelled_token_loc,
+ const char *hint);
};
#endif /* GCC_RICH_LOCATION_H */