This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[ObjC] PATCH: set at_eof before instantiating templates


This only affects Objective-C++, but there's no sense in having something wrong in the tree even if ObjC++ integration is still incomplete.

objc_finish_file does the first round of C++ template instantiation before invoking cp_finish_file. Doing end-of-file template instantiation without setting at_eof is incorrect; among other things, it results in extern templates getting emitted. (There's no need to clear at_eof after calling instantiate_pending_templates, because nothing that follows this relies on at_eof being 0. And, after all, it's just plain true that at this point we're at eof!)

OK to commit to mainline?

--Matt

2005-01-27 Matt Austern <austern@apple.com>
* objc-act.c (objc_finish_file): In Objective-C++ mode, set at_eof before calling instantiate_pending_templates.


Index: gcc/objc/objc-act.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/objc/objc-act.c,v
retrieving revision 1.264
diff -p -r1.264 objc-act.c
*** gcc/objc/objc-act.c 26 Jan 2005 21:01:57 -0000 1.264
--- gcc/objc/objc-act.c 27 Jan 2005 21:21:48 -0000
*************** objc_finish_file (void)
*** 591,596 ****
--- 591,597 ----
#ifdef OBJCPLUS
/* We need to instantiate templates _before_ we emit ObjC metadata;
if we do not, some metadata (such as selectors) may go missing. */
+ at_eof = 1;
instantiate_pending_templates (0);
#endif



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]