[gcc r11-11387] Objective-C/C++: Ensure sufficient setup for the preprocessor.

Iain D Sandoe iains@gcc.gnu.org
Sun Apr 28 14:37:49 GMT 2024


https://gcc.gnu.org/g:acfa562eaa440bf2bd5bd09035bd8bbde5d37d60

commit r11-11387-gacfa562eaa440bf2bd5bd09035bd8bbde5d37d60
Author: Iain Sandoe <iain@sandoe.co.uk>
Date:   Tue Jan 9 17:31:41 2024 +0000

    Objective-C/C++: Ensure sufficient setup for the preprocessor.
    
    The tokenizer makes use of functions that determine if identifiers
    are interface or class names, and those functions need a hash map
    to be set up.
    
    This ensures that these are initialized before pre-process-only
    jobs are run.
    
    gcc/objc/ChangeLog:
    
            * objc-act.c (objc_init): Initialize interface and class
            name hash maps before the preprocessor uses them.
    
    Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
    (cherry picked from commit 60f58d0630805e8dce79f5489658fd83e42fa8f1)

Diff:
---
 gcc/objc/objc-act.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 536ec028dbd..cb1fcbb2086 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -347,6 +347,11 @@ bool
 objc_init (void)
 {
   bool ok;
+
+  /* Set up stuff used by the preprocessor as well as FE parser.  */
+  interface_hash_init ();
+  hash_init ();
+
 #ifdef OBJCPLUS
   if (cxx_init () == false)
 #else
@@ -376,8 +381,6 @@ objc_init (void)
 
   /* Set up stuff used by FE parser and all runtimes.  */
   errbuf = XNEWVEC (char, 1024 * 10);
-  interface_hash_init ();
-  hash_init ();
   objc_encoding_init ();
   /* ... and then check flags and set-up for the selected runtime ... */
   if (flag_next_runtime && flag_objc_abi >= 2)


More information about the Gcc-cvs mailing list