2010-10-20 Nicola Pero <nicola.pero@meta-innovation.com>
* c-decl.c (c_write_global_declarations): Call
objc_write_global_declarations when compiling Objective-C.
* c-lang.c (finish_file): Removed.
In gcc/c-family/:
2010-10-20 Nicola Pero <nicola.pero@meta-innovation.com>
* c-common.h (finish_file): Removed.
(objc_write_global_declarations): New.
* c-opts.c (c_common_parse_file): Do not call finish_file.
* stub-objc.c (objc_write_global_declarations): New.
In gcc/cp/:
2010-10-20 Nicola Pero <nicola.pero@meta-innovation.com>
* cp-lang.c (finish_file): Removed.
* decl2.c (cp_write_global_declarations): Call
objc_write_global_declarations when compiling Objective-C++.
In gcc/objc/:
2010-10-20 Nicola Pero <nicola.pero@meta-innovation.com>
* objc-lang.c (finish_file): Removed.
* objc-act.c (objc_finish_file): Renamed to
objc_write_global_declarations. Do not try to instantiate C++
templates when compiling Objective-C++ as this is now
automatically done before this function is called. Do not check
for syntax-only run or PCH generation as this is done by the
callers.
* objc-act.h (objc_finish_file): Removed.
In gcc/objcp/:
2010-10-20 Nicola Pero <nicola.pero@meta-innovation.com>
* objcp-lang.c (finish_file): Removed.
In gcc/testsuite/:
2010-10-20 Nicola Pero <nicola.pero@meta-innovation.com>
Merge from 'apple/trunk' branch on FSF servers. Test adapted to
not require Foundation and run with the GNU runtime as well.
2006-03-13 Fariborz Jahanian <fjahanian@apple.com>
Radar
4439126
* obj-c++.dg/template-8.mm: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165714
138bc75d-0d04-0410-961f-
82ee72b054a4
+2010-10-20 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * c-decl.c (c_write_global_declarations): Call
+ objc_write_global_declarations when compiling Objective-C.
+ * c-lang.c (finish_file): Removed.
+
2010-10-19 DJ Delorie <dj@redhat.com>
* doc/tm.texi.in (TARGET_ASM_JUMP_ALIGN_MAX_SKIP): New.
if (pch_file)
return;
+ /* Do the Objective-C stuff. This is where all the Objective-C
+ module stuff gets generated (symtab, class/protocol/selector
+ lists etc). */
+ if (c_dialect_objc ())
+ objc_write_global_declarations ();
+
/* Close the external scope. */
ext_block = pop_scope ();
external_scope = 0;
+2010-10-20 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * c-common.h (finish_file): Removed.
+ (objc_write_global_declarations): New.
+ * c-opts.c (c_common_parse_file): Do not call finish_file.
+ * stub-objc.c (objc_write_global_declarations): New.
+
2010-10-18 Nicola Pero <nicola.pero@meta-innovation.com>
Implemented parsing @synthesize and @dynamic for
/* This is the basic parsing function. */
extern void c_parse_file (void);
-/* This is misnamed, it actually performs end-of-compilation processing. */
-extern void finish_file (void);
extern void warn_for_omitted_condop (location_t, tree);
/* The following ObjC/ObjC++ functions are called by the C and/or C++
front-ends; they all must have corresponding stubs in stub-objc.c. */
+extern void objc_write_global_declarations (void);
extern tree objc_is_class_name (tree);
extern tree objc_is_object_ptr (tree);
extern void objc_check_decl (tree);
pch_init ();
push_file_scope ();
c_parse_file ();
- finish_file ();
pop_file_scope ();
/* And end the main input file, if the debug writer wants it */
if (debug_hooks->start_end_main_source_file)
{
return;
}
+
+void
+objc_write_global_declarations (void)
+{
+}
/* Each front end provides its own lang hook initializer. */
struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
-/* Final processing of file-scope data. The Objective-C version of
- this function still does something. */
-void
-finish_file (void)
-{
-}
-
#include "gtype-c.h"
+2010-10-20 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * cp-lang.c (finish_file): Removed.
+ * decl2.c (cp_write_global_declarations): Call
+ objc_write_global_declarations when compiling Objective-C++.
+
2010-10-19 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/46046
return RECORD_IS_STRUCT;
}
-void
-finish_file (void)
-{
-}
-
static GTY(()) tree cp_eh_personality_decl;
static tree
if (!decl_defined_p (decl))
no_linkage_error (decl);
+ /* Then, do the Objective-C stuff. This is where all the
+ Objective-C module stuff gets generated (symtab,
+ class/protocol/selector lists etc). This must be done after C++
+ templates, destructors etc. so that selectors used in C++
+ templates are properly allocated. */
+ if (c_dialect_objc ())
+ objc_write_global_declarations ();
+
/* We give C linkage to static constructors and destructors. */
push_lang_context (lang_name_c);
+2010-10-20 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objc-lang.c (finish_file): Removed.
+ * objc-act.c (objc_finish_file): Renamed to
+ objc_write_global_declarations. Do not try to instantiate C++
+ templates when compiling Objective-C++ as this is now
+ automatically done before this function is called. Do not check
+ for syntax-only run or PCH generation as this is done by the
+ callers.
+ * objc-act.h (objc_finish_file): Removed.
+
2010-10-18 Nicola Pero <nicola.pero@meta-innovation.com>
Implemented parsing @synthesize and @dynamic for
return true;
}
+/* This is called automatically (at the very end of compilation) by
+ c_write_global_declarations and cp_write_global_declarations. */
void
-objc_finish_file (void)
+objc_write_global_declarations (void)
{
mark_referenced_methods ();
-#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
-
- /* Finalize Objective-C runtime data. No need to generate tables
- and code if only checking syntax, or if generating a PCH file. */
- if (!flag_syntax_only && !pch_file)
- finish_objc ();
+ /* Finalize Objective-C runtime data. */
+ finish_objc ();
if (gen_declaration_file)
fclose (gen_declaration_file);
bool objc_init (void);
const char *objc_printable_name (tree, int);
-void objc_finish_file (void);
tree objc_fold_obj_type_ref (tree, tree);
int objc_gimplify_expr (tree *, gimple_seq *, gimple_seq *);
tree objc_eh_runtime_type (tree);
tree_contains_struct[PROPERTY_DECL][TS_DECL_COMMON] = 1;
}
-void
-finish_file (void)
-{
- objc_finish_file ();
-}
-
#include "gtype-objc.h"
+2010-10-20 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ * objcp-lang.c (finish_file): Removed.
+
2010-10-14 Iain Sandoe <iains@gcc.gnu.org>
merge from FSF apple 'trunk' branch.
return objcp_eh_personality_decl;
}
-
-void
-finish_file (void)
-{
- objc_finish_file ();
-}
-
#include "gtype-objcp.h"
2010-10-20 Nicola Pero <nicola.pero@meta-innovation.com>
+
+ Merge from 'apple/trunk' branch on FSF servers. Test adapted to
+ not require Foundation and run with the GNU runtime as well.
+
+ 2006-03-13 Fariborz Jahanian <fjahanian@apple.com>
+
+ Radar 4439126
+ * obj-c++.dg/template-8.mm: New.
+
+2010-10-20 Nicola Pero <nicola.pero@meta-innovation.com>
PR objc/23709
* objc.dg/pr23709.m: New.
--- /dev/null
+/* Test that all pending instantiations have taken place before meta-data
+ generation. */
+/* Author: Fariborz Jahanian <fjahanian@apple.com> */
+/* Adapted by Nicola Pero <nicola.pero@meta-innovation.com> */
+/* { dg-do run } */
+
+#include <objc/objc.h>
+#include <objc/runtime.h>
+
+@interface MyRootClass
+{ Class isa; }
++ alloc;
+- init;
+- doSomething;
+@end
+
+@implementation MyRootClass
++ alloc { return class_createInstance (self, 0); }
+- init { return self; }
+- doSomething { return self; }
+@end
+
+class Base
+{
+public:
+ Base() { }
+ virtual ~Base() { }
+
+ void destroy() { delete this; }
+};
+
+template<class T>
+class Subclass : public T
+{
+public:
+ Subclass() { }
+
+ virtual ~Subclass()
+ {
+ [[[MyRootClass alloc] init] doSomething];
+ }
+};
+
+int main(int argc, const char * argv[])
+{
+ Subclass<Base>* theSubclass = new Subclass<Base>();
+ theSubclass->destroy();
+ return 0;
+}