Commit 6d549148 by Nicola Pero Committed by Nicola Pero

Reverted usage of TARGET_64BIT for code generation for GNU Objective-C runtime

From-SVN: r170343
parent 3890ce93
2011-02-19 Nicola Pero <nicola.pero@meta-innovation.com>
* objc-gnu-runtime-abi-01.c (TARGET_64BIT): Removed. Removed
usage of padding fields. Do not include tm.h.
* objc-act.c (objc_write_global_declaration): Set input_location
to BUILTINS_LOCATION while generating runtime metadata.
2011-01-19 Nicola Pero <nicola.pero@meta-innovation.com> 2011-01-19 Nicola Pero <nicola.pero@meta-innovation.com>
PR objc/47784 PR objc/47784
......
...@@ -466,6 +466,8 @@ objc_write_global_declarations (void) ...@@ -466,6 +466,8 @@ objc_write_global_declarations (void)
and code if only checking syntax, or if generating a PCH file. */ and code if only checking syntax, or if generating a PCH file. */
if (!flag_syntax_only && !pch_file) if (!flag_syntax_only && !pch_file)
{ {
location_t saved_location;
/* If gen_declaration desired, open the output file. */ /* If gen_declaration desired, open the output file. */
if (flag_gen_declaration) if (flag_gen_declaration)
{ {
...@@ -475,8 +477,24 @@ objc_write_global_declarations (void) ...@@ -475,8 +477,24 @@ objc_write_global_declarations (void)
fatal_error ("can%'t open %s: %m", dumpname); fatal_error ("can%'t open %s: %m", dumpname);
free (dumpname); free (dumpname);
} }
/* Set the input location to BUILTINS_LOCATION. This is good
for error messages, in case any is generated while producing
the metadata, but it also silences warnings that would be
produced when compiling with -Wpadded in case when padding is
automatically added to the built-in runtime data structure
declarations. We know about this padding, and it is fine; we
don't want users to see any warnings about it if they use
-Wpadded. */
saved_location = input_location;
input_location = BUILTINS_LOCATION;
/* Compute and emit the meta-data tables for this runtime. */ /* Compute and emit the meta-data tables for this runtime. */
(*runtime.generate_metadata) (); (*runtime.generate_metadata) ();
/* Restore the original location, just in case it mattered. */
input_location = saved_location;
/* ... and then close any declaration file we opened. */ /* ... and then close any declaration file we opened. */
if (gen_declaration_file) if (gen_declaration_file)
fclose (gen_declaration_file); fclose (gen_declaration_file);
......
...@@ -21,7 +21,6 @@ along with GCC; see the file COPYING3. If not see ...@@ -21,7 +21,6 @@ along with GCC; see the file COPYING3. If not see
#include "config.h" #include "config.h"
#include "system.h" #include "system.h"
#include "coretypes.h" #include "coretypes.h"
#include "tm.h"
#include "tree.h" #include "tree.h"
#ifdef OBJCPLUS #ifdef OBJCPLUS
...@@ -83,11 +82,6 @@ along with GCC; see the file COPYING3. If not see ...@@ -83,11 +82,6 @@ along with GCC; see the file COPYING3. If not see
if (VERS) \ if (VERS) \
DECL_ATTRIBUTES (DECL) = build_tree_list ((VERS), (KIND)); DECL_ATTRIBUTES (DECL) = build_tree_list ((VERS), (KIND));
/* FIXME: Remove this macro, not needed. */
#ifndef TARGET_64BIT
#define TARGET_64BIT 0
#endif
static void gnu_runtime_01_initialize (void); static void gnu_runtime_01_initialize (void);
static void build_selector_template (void); static void build_selector_template (void);
...@@ -1995,9 +1989,7 @@ build_objc_symtab_template (void) ...@@ -1995,9 +1989,7 @@ build_objc_symtab_template (void)
/* short cat_def_cnt; */ /* short cat_def_cnt; */
add_field_decl (short_integer_type_node, "cat_def_cnt", &chain); add_field_decl (short_integer_type_node, "cat_def_cnt", &chain);
/* FIXME: Remove. */ /* Note that padding will be added here on LP64. */
if (TARGET_64BIT)
add_field_decl (integer_type_node, "_explicit_padder", &chain);
/* void *defs[imp_count + cat_count (+ 1)]; */ /* void *defs[imp_count + cat_count (+ 1)]; */
/* NB: The index is one less than the size of the array. */ /* NB: The index is one less than the size of the array. */
...@@ -2043,19 +2035,9 @@ init_objc_symtab (tree type) ...@@ -2043,19 +2035,9 @@ init_objc_symtab (tree type)
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, CONSTRUCTOR_APPEND_ELT (v, NULL_TREE,
build_int_cst (short_integer_type_node, cat_count)); build_int_cst (short_integer_type_node, cat_count));
/* FIXME: Remove. */
if (TARGET_64BIT)
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE,
build_int_cst (integer_type_node, 0));
/* cls_def = { ..., { &Foo, &Bar, ...}, ... } */ /* cls_def = { ..., { &Foo, &Bar, ...}, ... } */
field = TYPE_FIELDS (type); field = TYPE_FIELDS (type);
/* FIXME: Remove. */
if (TARGET_64BIT)
field = DECL_CHAIN (field);
field = DECL_CHAIN (DECL_CHAIN (DECL_CHAIN (DECL_CHAIN (field)))); field = DECL_CHAIN (DECL_CHAIN (DECL_CHAIN (DECL_CHAIN (field))));
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, init_def_list (TREE_TYPE (field))); CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, init_def_list (TREE_TYPE (field)));
......
2011-02-19 Nicola Pero <nicola.pero@meta-innovation.com> 2011-02-19 Nicola Pero <nicola.pero@meta-innovation.com>
* objc.dg/layout-2.m: New.
* objc.dg/selector-3.m: Adjusted location of error message.
* objc.dg/type-size-3.m: Same.
* obj-c++.dg/selector-3.mm: Same.
2011-02-19 Nicola Pero <nicola.pero@meta-innovation.com>
PR objc/47784 PR objc/47784
* objc.dg/property/dotsyntax-22.m: New. * objc.dg/property/dotsyntax-22.m: New.
* obj-c++.dg/property/dotsyntax-22.mm: New. * obj-c++.dg/property/dotsyntax-22.mm: New.
...@@ -74,7 +81,7 @@ ...@@ -74,7 +81,7 @@
2011-02-18 Iain Sandoe <iains@gcc.gnu.org> 2011-02-18 Iain Sandoe <iains@gcc.gnu.org>
* objc/execute/exceptions/foward-1.x: New. * objc/execute/exceptions/foward-1.x: New.
2011-02-18 Janus Weil <janus@gcc.gnu.org> 2011-02-18 Janus Weil <janus@gcc.gnu.org>
PR fortran/47789 PR fortran/47789
......
...@@ -22,5 +22,8 @@ typedef const struct objc_selector *SEL; ...@@ -22,5 +22,8 @@ typedef const struct objc_selector *SEL;
a = @selector(b1ar); a = @selector(b1ar);
b = @selector(bar); b = @selector(bar);
} }
@end /* { dg-warning "creating selector for nonexistent method .b1ar." } */ @end
/* FIXME: The error message should be on the correct line. */
/* { dg-warning "creating selector for nonexistent method .b1ar." "" { target *-*-* } 0 } */
/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, February 2011. */
/* Ensure that -Wpadded generates no warnings during runtime structure metadata
generation. */
/* { dg-do compile } */
/* { dg-options "-Wpadded" } */
#include "../objc-obj-c++-shared/Object1.h"
/* Implement a class, so that the metadata generation happens. */
@interface MyClass : Object
@end
@implementation MyClass
@end
...@@ -23,5 +23,8 @@ typedef const struct objc_selector *SEL; ...@@ -23,5 +23,8 @@ typedef const struct objc_selector *SEL;
a = @selector(b1ar); a = @selector(b1ar);
b = @selector(bar); b = @selector(bar);
} }
@end /* { dg-warning "creating selector for nonexistent method .b1ar." } */ @end
/* FIXME: The error message should be on the correct line. */
/* { dg-warning "creating selector for nonexistent method .b1ar." "" { target *-*-* } 0 } */
...@@ -15,4 +15,6 @@ typedef struct ...@@ -15,4 +15,6 @@ typedef struct
@end @end
@implementation Test @implementation Test
@end /* { dg-error "instance variable has unknown size" } */ @end
/* { dg-error "instance variable has unknown size" "" { target *-*-* } 0 } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment