In gcc/: 2010-10-20 Nicola Pero <nicola.pero@meta-innovation.com>
In gcc/: 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. From-SVN: r165714
This commit is contained in:
parent
b170a7784c
commit
977e30bc45
@ -1,3 +1,9 @@
|
||||
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.
|
||||
|
@ -9782,6 +9782,12 @@ c_write_global_declarations (void)
|
||||
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;
|
||||
|
@ -1,3 +1,10 @@
|
||||
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
|
||||
|
@ -788,8 +788,6 @@ extern HOST_WIDE_INT c_common_to_target_charset (HOST_WIDE_INT);
|
||||
|
||||
/* 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);
|
||||
|
||||
@ -981,6 +979,7 @@ extern void c_parse_error (const char *, enum cpp_ttype, tree, unsigned char);
|
||||
|
||||
/* 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);
|
||||
|
@ -1160,7 +1160,6 @@ c_common_parse_file (int set_yydebug)
|
||||
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)
|
||||
|
@ -416,3 +416,8 @@ objc_finish_foreach_loop (location_t ARG_UNUSED (location), tree ARG_UNUSED (obj
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
objc_write_global_declarations (void)
|
||||
{
|
||||
}
|
||||
|
@ -47,11 +47,4 @@ enum c_language_kind c_language = clk_c;
|
||||
/* 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"
|
||||
|
@ -1,3 +1,9 @@
|
||||
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
|
||||
|
@ -154,11 +154,6 @@ cp_classify_record (tree type)
|
||||
return RECORD_IS_STRUCT;
|
||||
}
|
||||
|
||||
void
|
||||
finish_file (void)
|
||||
{
|
||||
}
|
||||
|
||||
static GTY(()) tree cp_eh_personality_decl;
|
||||
|
||||
static tree
|
||||
|
@ -3896,6 +3896,14 @@ cp_write_global_declarations (void)
|
||||
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);
|
||||
|
||||
|
@ -1,3 +1,14 @@
|
||||
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
|
||||
|
@ -624,22 +624,15 @@ objc_init (void)
|
||||
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);
|
||||
|
@ -26,7 +26,6 @@ along with GCC; see the file COPYING3. If not see
|
||||
|
||||
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);
|
||||
|
@ -92,10 +92,4 @@ objc_init_ts (void)
|
||||
tree_contains_struct[PROPERTY_DECL][TS_DECL_COMMON] = 1;
|
||||
}
|
||||
|
||||
void
|
||||
finish_file (void)
|
||||
{
|
||||
objc_finish_file ();
|
||||
}
|
||||
|
||||
#include "gtype-objc.h"
|
||||
|
@ -1,3 +1,7 @@
|
||||
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.
|
||||
|
@ -156,11 +156,4 @@ objcxx_eh_personality (void)
|
||||
return objcp_eh_personality_decl;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
finish_file (void)
|
||||
{
|
||||
objc_finish_file ();
|
||||
}
|
||||
|
||||
#include "gtype-objcp.h"
|
||||
|
@ -1,3 +1,13 @@
|
||||
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
|
||||
|
49
gcc/testsuite/obj-c++.dg/template-8.mm
Normal file
49
gcc/testsuite/obj-c++.dg/template-8.mm
Normal file
@ -0,0 +1,49 @@
|
||||
/* 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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user