[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