aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicola Pero <nicola.pero@meta-innovation.com>2011-02-20 17:52:44 +0000
committerNicola Pero <nicola@gcc.gnu.org>2011-02-20 17:52:44 +0000
commit6d549148695719942e87205dc0a765317757a905 (patch)
tree4fa88789da4ac6afcba1f80d69d01dcbd5728d40
parent3890ce93e267fe56883b7b831475180641d9038f (diff)
downloadgcc-6d549148695719942e87205dc0a765317757a905.zip
gcc-6d549148695719942e87205dc0a765317757a905.tar.gz
gcc-6d549148695719942e87205dc0a765317757a905.tar.bz2
Reverted usage of TARGET_64BIT for code generation for GNU Objective-C runtime
From-SVN: r170343
-rw-r--r--gcc/objc/ChangeLog7
-rw-r--r--gcc/objc/objc-act.c18
-rw-r--r--gcc/objc/objc-gnu-runtime-abi-01.c20
-rw-r--r--gcc/testsuite/ChangeLog9
-rw-r--r--gcc/testsuite/obj-c++.dg/selector-3.mm5
-rw-r--r--gcc/testsuite/objc.dg/layout-2.m14
-rw-r--r--gcc/testsuite/objc.dg/selector-3.m5
-rw-r--r--gcc/testsuite/objc.dg/type-size-3.m4
8 files changed, 59 insertions, 23 deletions
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index 9b92980..c2f16ec 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,3 +1,10 @@
+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>
PR objc/47784
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 0cabc52..a91c708 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -466,6 +466,8 @@ objc_write_global_declarations (void)
and code if only checking syntax, or if generating a PCH file. */
if (!flag_syntax_only && !pch_file)
{
+ location_t saved_location;
+
/* If gen_declaration desired, open the output file. */
if (flag_gen_declaration)
{
@@ -475,8 +477,24 @@ objc_write_global_declarations (void)
fatal_error ("can%'t open %s: %m", 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. */
(*runtime.generate_metadata) ();
+
+ /* Restore the original location, just in case it mattered. */
+ input_location = saved_location;
+
/* ... and then close any declaration file we opened. */
if (gen_declaration_file)
fclose (gen_declaration_file);
diff --git a/gcc/objc/objc-gnu-runtime-abi-01.c b/gcc/objc/objc-gnu-runtime-abi-01.c
index e2a3ce7..7fb8761 100644
--- a/gcc/objc/objc-gnu-runtime-abi-01.c
+++ b/gcc/objc/objc-gnu-runtime-abi-01.c
@@ -21,7 +21,6 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
#include "coretypes.h"
-#include "tm.h"
#include "tree.h"
#ifdef OBJCPLUS
@@ -83,11 +82,6 @@ along with GCC; see the file COPYING3. If not see
if (VERS) \
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 build_selector_template (void);
@@ -1995,9 +1989,7 @@ build_objc_symtab_template (void)
/* short cat_def_cnt; */
add_field_decl (short_integer_type_node, "cat_def_cnt", &chain);
- /* FIXME: Remove. */
- if (TARGET_64BIT)
- add_field_decl (integer_type_node, "_explicit_padder", &chain);
+ /* Note that padding will be added here on LP64. */
/* void *defs[imp_count + cat_count (+ 1)]; */
/* NB: The index is one less than the size of the array. */
@@ -2043,19 +2035,9 @@ init_objc_symtab (tree type)
CONSTRUCTOR_APPEND_ELT (v, NULL_TREE,
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, ...}, ... } */
field = TYPE_FIELDS (type);
-
- /* FIXME: Remove. */
- if (TARGET_64BIT)
- field = 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)));
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6c42236..0161ebb 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,12 @@
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
* objc.dg/property/dotsyntax-22.m: New.
* obj-c++.dg/property/dotsyntax-22.mm: New.
@@ -74,7 +81,7 @@
2011-02-18 Iain Sandoe <iains@gcc.gnu.org>
* objc/execute/exceptions/foward-1.x: New.
-
+
2011-02-18 Janus Weil <janus@gcc.gnu.org>
PR fortran/47789
diff --git a/gcc/testsuite/obj-c++.dg/selector-3.mm b/gcc/testsuite/obj-c++.dg/selector-3.mm
index 49f7e41..a1321a7 100644
--- a/gcc/testsuite/obj-c++.dg/selector-3.mm
+++ b/gcc/testsuite/obj-c++.dg/selector-3.mm
@@ -22,5 +22,8 @@ typedef const struct objc_selector *SEL;
a = @selector(b1ar);
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 } */
diff --git a/gcc/testsuite/objc.dg/layout-2.m b/gcc/testsuite/objc.dg/layout-2.m
new file mode 100644
index 0000000..474fc04
--- /dev/null
+++ b/gcc/testsuite/objc.dg/layout-2.m
@@ -0,0 +1,14 @@
+/* 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
diff --git a/gcc/testsuite/objc.dg/selector-3.m b/gcc/testsuite/objc.dg/selector-3.m
index b3ffcca..c0c5f3d 100644
--- a/gcc/testsuite/objc.dg/selector-3.m
+++ b/gcc/testsuite/objc.dg/selector-3.m
@@ -23,5 +23,8 @@ typedef const struct objc_selector *SEL;
a = @selector(b1ar);
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 } */
diff --git a/gcc/testsuite/objc.dg/type-size-3.m b/gcc/testsuite/objc.dg/type-size-3.m
index 9486658..6d7fe03 100644
--- a/gcc/testsuite/objc.dg/type-size-3.m
+++ b/gcc/testsuite/objc.dg/type-size-3.m
@@ -15,4 +15,6 @@ typedef struct
@end
@implementation Test
-@end /* { dg-error "instance variable has unknown size" } */
+@end
+
+/* { dg-error "instance variable has unknown size" "" { target *-*-* } 0 } */