+2017-12-06 David Malcolm <dmalcolm@redhat.com>
+
+ * Makefile.in (C_COMMON_OBJS): Add c-family/c-spellcheck.o.
+ * spellcheck-tree.c (find_closest_macro_cpp_cb): Move to
+ c-family/c-spellcheck.cc.
+ (best_macro_match::best_macro_match): Likewise.
+ * spellcheck-tree.h
+ (struct edit_distance_traits<cpp_hashnode *>): Move to
+ c-family/c-spellcheck.h.
+ (class best_macro_match): Likewise.
+
2017-12-06 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/83293
c-family/c-ppoutput.o c-family/c-pragma.o c-family/c-pretty-print.o \
c-family/c-semantics.o c-family/c-ada-spec.o \
c-family/c-ubsan.o c-family/known-headers.o \
- c-family/c-attribs.o c-family/c-warn.o
+ c-family/c-attribs.o c-family/c-warn.o c-family/c-spellcheck.o
# Language-independent object files.
# We put the *-match.o and insn-*.o files first so that a parallel make
+2017-12-06 David Malcolm <dmalcolm@redhat.com>
+
+ * c-spellcheck.cc: New file, taken from macro-handling code in
+ spellcheck-tree.c.
+ * c-spellcheck.h: New file, taken from macro-handling code in
+ spellcheck-tree.h.
+
2017-12-01 Jakub Jelinek <jakub@redhat.com>
* c-attribs.c (c_common_attribute_table): Remove "cilk simd function"
--- /dev/null
+/* Find near-matches for macros.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "tm.h"
+#include "tree.h"
+#include "cpplib.h"
+#include "spellcheck-tree.h"
+#include "c-family/c-spellcheck.h"
+
+/* A callback for cpp_forall_identifiers, for use by best_macro_match's ctor.
+ Process HASHNODE and update the best_macro_match instance pointed to be
+ USER_DATA. */
+
+static int
+find_closest_macro_cpp_cb (cpp_reader *, cpp_hashnode *hashnode,
+ void *user_data)
+{
+ if (hashnode->type != NT_MACRO)
+ return 1;
+
+ best_macro_match *bmm = (best_macro_match *)user_data;
+ bmm->consider (hashnode);
+
+ /* Keep iterating. */
+ return 1;
+}
+
+/* Constructor for best_macro_match.
+ Use find_closest_macro_cpp_cb to find the closest matching macro to
+ NAME within distance < best_distance_so_far. */
+
+best_macro_match::best_macro_match (tree goal,
+ edit_distance_t best_distance_so_far,
+ cpp_reader *reader)
+: best_match <goal_t, candidate_t> (goal, best_distance_so_far)
+{
+ cpp_forall_identifiers (reader, find_closest_macro_cpp_cb, this);
+}
--- /dev/null
+/* Find near-matches for macros.
+ Copyright (C) 2016-2017 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#ifndef C_SPELLCHECK_H
+#define C_SPELLCHECK_H
+
+#include "spellcheck.h"
+
+/* Specialization of edit_distance_traits for preprocessor macros. */
+
+template <>
+struct edit_distance_traits<cpp_hashnode *>
+{
+ static size_t get_length (cpp_hashnode *hashnode)
+ {
+ return hashnode->ident.len;
+ }
+
+ static const char *get_string (cpp_hashnode *hashnode)
+ {
+ return (const char *)hashnode->ident.str;
+ }
+};
+
+/* Specialization of best_match<> for finding the closest preprocessor
+ macro to a given identifier. */
+
+class best_macro_match : public best_match<tree, cpp_hashnode *>
+{
+ public:
+ best_macro_match (tree goal, edit_distance_t best_distance_so_far,
+ cpp_reader *reader);
+};
+
+#endif /* C_SPELLCHECK_H */
+2017-12-06 David Malcolm <dmalcolm@redhat.com>
+
+ * c-decl.c: Include "c-family/c-spellcheck.h".
+
2017-12-05 Martin Liska <mliska@suse.cz>
Jakub Jelinek <jakub@redhat.com>
#include "asan.h"
#include "c-family/name-hint.h"
#include "c-family/known-headers.h"
+#include "c-family/c-spellcheck.h"
/* In grokdeclarator, distinguish syntactic contexts of declarators. */
enum decl_context
+2017-12-06 David Malcolm <dmalcolm@redhat.com>
+
+ * name-lookup.c: Include "c-family/c-spellcheck.h".
+
2017-12-05 Jason Merrill <jason@redhat.com>
PR c++/82331 - ICE with variadic partial specialization of auto
#include "parser.h"
#include "c-family/name-hint.h"
#include "c-family/known-headers.h"
+#include "c-family/c-spellcheck.h"
static cxx_binding *cxx_binding_make (tree value, tree type);
static cp_binding_level *innermost_nonclass_level (void);
return bm.get_best_meaningful_candidate ();
}
-/* A callback for cpp_forall_identifiers, for use by best_macro_match's ctor.
- Process HASHNODE and update the best_macro_match instance pointed to be
- USER_DATA. */
-
-static int
-find_closest_macro_cpp_cb (cpp_reader *, cpp_hashnode *hashnode,
- void *user_data)
-{
- if (hashnode->type != NT_MACRO)
- return 1;
-
- best_macro_match *bmm = (best_macro_match *)user_data;
- bmm->consider (hashnode);
-
- /* Keep iterating. */
- return 1;
-}
-
-/* Constructor for best_macro_match.
- Use find_closest_macro_cpp_cb to find the closest matching macro to
- NAME within distance < best_distance_so_far. */
-
-best_macro_match::best_macro_match (tree goal,
- edit_distance_t best_distance_so_far,
- cpp_reader *reader)
-: best_match <goal_t, candidate_t> (goal, best_distance_so_far)
-{
- cpp_forall_identifiers (reader, find_closest_macro_cpp_cb, this);
-}
-
#if CHECKING_P
namespace selftest {
}
};
-/* Specialization of edit_distance_traits for preprocessor macros. */
-
-template <>
-struct edit_distance_traits<cpp_hashnode *>
-{
- static size_t get_length (cpp_hashnode *hashnode)
- {
- return hashnode->ident.len;
- }
-
- static const char *get_string (cpp_hashnode *hashnode)
- {
- return (const char *)hashnode->ident.str;
- }
-};
-
-/* Specialization of best_match<> for finding the closest preprocessor
- macro to a given identifier. */
-
-class best_macro_match : public best_match<tree, cpp_hashnode *>
-{
- public:
- best_macro_match (tree goal, edit_distance_t best_distance_so_far,
- cpp_reader *reader);
-};
-
#endif /* GCC_SPELLCHECK_TREE_H */