[gcc/devel/c++-modules] Adjust lang hooks
Nathan Sidwell
nathan@gcc.gnu.org
Wed Nov 18 12:51:09 GMT 2020
https://gcc.gnu.org/g:99c594dda5ae78b90756a133ea89c732cdd53196
commit 99c594dda5ae78b90756a133ea89c732cdd53196
Author: Nathan Sidwell <nathan@acm.org>
Date: Mon Nov 16 10:34:25 2020 -0800
Adjust lang hooks
gcc/c-family/
* c-opts.c (c_common_init): Drop preprocess_undef
gcc/cp/
* cp-lang.c (LANG_HOOKS_PREPROCESS_DEFERRED_MACRO): Delete.
* cp-tree.h (module_cpp_deferred_macro): Do not declare.
* module.cc (module_cpp_deferred_macro): Delete.
(module_preprocess_options): Set deferred macro and undef
callbacks here.
gcc/
* langhooks-def.h (LANG_HOOKS_PREPROCESS_UNDEF): Delete.
* langhooks.h (struct lang_hooks): Delete
preprocess_deferred_macro.
Diff:
---
ChangeLog.modules | 14 ++++++++++++++
gcc/c-family/c-opts.c | 5 -----
gcc/cp/cp-lang.c | 2 --
gcc/cp/cp-tree.h | 2 --
gcc/cp/module.cc | 17 +++++++++--------
gcc/langhooks-def.h | 2 --
gcc/langhooks.h | 4 ----
gcc/testsuite/g++.dg/modules/var-tpl-concept-1_a.C | 2 +-
8 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/ChangeLog.modules b/ChangeLog.modules
index 6147ce56548..cb4519592ca 100644
--- a/ChangeLog.modules
+++ b/ChangeLog.modules
@@ -1,5 +1,19 @@
2020-11-16 Nathan Sidwell <nathan@acm.org>
+ Adjust lang hooks
+ gcc/c-family/
+ * c-opts.c (c_common_init): Drop preprocess_undef
+ gcc/cp/
+ * cp-lang.c (LANG_HOOKS_PREPROCESS_DEFERRED_MACRO): Delete.
+ * cp-tree.h (module_cpp_deferred_macro): Do not declare.
+ * module.cc (module_cpp_deferred_macro): Delete.
+ (module_preprocess_options): Set deferred macro and undef
+ callbacks here.
+ gcc/
+ * langhooks-def.h (LANG_HOOKS_PREPROCESS_UNDEF): Delete.
+ * langhooks.h (struct lang_hooks): Delete
+ preprocess_deferred_macro.
+
Constrained partial variable templates
gcc/cp/
* module.cc (trees_{in,out}::key_mergeable): Variable templates
diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
index 00c7b20015f..59cabd12407 100644
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
@@ -1182,11 +1182,6 @@ c_common_init (void)
/* Has to wait until now so that cpplib has its hash table. */
init_pragma ();
- struct cpp_callbacks *cb = cpp_get_callbacks (parse_in);
- cb->user_deferred_macro = lang_hooks.preprocess_deferred_macro;
- if (!cb->undef)
- cb->undef = lang_hooks.preprocess_undef;
-
if (flag_preprocess_only)
{
c_finish_options ();
diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c
index d75fa8ab708..dfee8e3d141 100644
--- a/gcc/cp/cp-lang.c
+++ b/gcc/cp/cp-lang.c
@@ -83,8 +83,6 @@ static tree cxx_enum_underlying_base_type (const_tree);
#define LANG_HOOKS_PREPROCESS_OPTIONS module_preprocess_options
#undef LANG_HOOKS_PREPROCESS_UNDEF
#define LANG_HOOKS_PREPROCESS_UNDEF module_cpp_undef
-#undef LANG_HOOKS_PREPROCESS_DEFERRED_MACRO
-#define LANG_HOOKS_PREPROCESS_DEFERRED_MACRO module_cpp_deferred_macro
#undef LANG_HOOKS_PREPROCESS_TOKEN
#define LANG_HOOKS_PREPROCESS_TOKEN module_token_pre
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 659a0502b0b..29c97f6acd7 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -7065,8 +7065,6 @@ extern void declare_module (module_state *, location_t, bool export_p,
tree attr, cpp_reader *);
extern void module_cpp_undef (cpp_reader *, location_t, cpp_hashnode *);
-extern cpp_macro *module_cpp_deferred_macro (cpp_reader *,
- location_t, cpp_hashnode *);
extern void init_modules (cpp_reader *);
extern void fini_modules ();
extern void maybe_check_all_macros (cpp_reader *);
diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc
index d77b7da72fa..be276dc3026 100644
--- a/gcc/cp/module.cc
+++ b/gcc/cp/module.cc
@@ -18949,13 +18949,6 @@ module_cpp_undef (cpp_reader *reader, location_t loc, cpp_hashnode *node)
module_state::undef_macro (reader, loc, node);
}
-cpp_macro *
-module_cpp_deferred_macro (cpp_reader *reader, location_t loc,
- cpp_hashnode *node)
-{
- return module_state::deferred_macro (reader, loc, node);
-}
-
/* NAME & LEN are a preprocessed header name, possibly including the
surrounding "" or <> characters. Return the raw string name of the
module to which it refers. This will be an absolute path, or begin
@@ -19863,7 +19856,15 @@ module_preprocess_options (cpp_reader *reader)
{
if (flag_modules)
{
- cpp_get_callbacks (reader)->translate_include = maybe_translate_include;
+ auto *cb = cpp_get_callbacks (reader);
+
+ cb->translate_include = maybe_translate_include;
+ cb->user_deferred_macro = module_state::deferred_macro;
+ if (!cb->undef)
+ /* If this hook is already in use, that implementation will
+ call the undef langhook. */
+ cb->undef = module_cpp_undef;
+
cpp_get_options (reader)->module_directives = true;
}
}
diff --git a/gcc/langhooks-def.h b/gcc/langhooks-def.h
index 1285d548050..2f66f5eb161 100644
--- a/gcc/langhooks-def.h
+++ b/gcc/langhooks-def.h
@@ -106,7 +106,6 @@ extern void lhd_finalize_early_debug (void);
#define LANG_HOOKS_PREPROCESS_MAIN_FILE NULL
#define LANG_HOOKS_PREPROCESS_OPTIONS NULL
#define LANG_HOOKS_PREPROCESS_UNDEF NULL
-#define LANG_HOOKS_PREPROCESS_DEFERRED_MACRO NULL
#define LANG_HOOKS_PREPROCESS_TOKEN NULL
#define LANG_HOOKS_REGISTER_DUMPS lhd_register_dumps
#define LANG_HOOKS_COMPLAIN_WRONG_LANG_P lhd_complain_wrong_lang_p
@@ -325,7 +324,6 @@ extern void lhd_end_section (void);
LANG_HOOKS_PREPROCESS_MAIN_FILE, \
LANG_HOOKS_PREPROCESS_OPTIONS, \
LANG_HOOKS_PREPROCESS_UNDEF, \
- LANG_HOOKS_PREPROCESS_DEFERRED_MACRO, \
LANG_HOOKS_PREPROCESS_TOKEN, \
LANG_HOOKS_REGISTER_DUMPS, \
LANG_HOOKS_COMPLAIN_WRONG_LANG_P, \
diff --git a/gcc/langhooks.h b/gcc/langhooks.h
index c70c2317c32..77fcf6a4132 100644
--- a/gcc/langhooks.h
+++ b/gcc/langhooks.h
@@ -366,10 +366,6 @@ struct lang_hooks
/* Undefining a macro. */
void (*preprocess_undef) (cpp_reader *, location_t, cpp_hashnode *);
- /* Define a deferred macro. */
- struct cpp_macro *(*preprocess_deferred_macro) (cpp_reader *, location_t,
- cpp_hashnode *);
-
/* Observer for preprocessing stream. */
uintptr_t (*preprocess_token) (cpp_reader *, const cpp_token *, uintptr_t);
/* Various flags it can return about the token. */
diff --git a/gcc/testsuite/g++.dg/modules/var-tpl-concept-1_a.C b/gcc/testsuite/g++.dg/modules/var-tpl-concept-1_a.C
index 3332f599af6..4655e396118 100644
--- a/gcc/testsuite/g++.dg/modules/var-tpl-concept-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/var-tpl-concept-1_a.C
@@ -5,4 +5,4 @@ module;
export module foo:part1;
// { dg-module-cmi {foo:part1} }
-export void bar (const string &);
+export void bar (string &);
More information about the Gcc-cvs
mailing list