aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog13
-rw-r--r--gcc/c-family/ChangeLog6
-rw-r--r--gcc/c-family/c-opts.c8
-rw-r--r--gcc/c-family/c.opt4
-rw-r--r--gcc/config/darwin.c27
-rw-r--r--gcc/config/darwin.h18
-rw-r--r--gcc/defaults.h5
-rw-r--r--gcc/doc/tm.texi19
-rw-r--r--gcc/doc/tm.texi.in19
-rw-r--r--gcc/flags.h4
-rw-r--r--gcc/gccspec.c2
-rw-r--r--gcc/toplev.c8
12 files changed, 81 insertions, 52 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fcd1390..5091c39 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,16 @@
+2011-11-30 Iain Sandoe <iains@gcc.gnu.org>
+
+ * doc/tm.texi.in (NEXT_OBJC_RUNTIME): Update macro description.
+ * doc/tm.texi: Regenerate.
+ * flags.h (flag_next_runtime): Remove references.
+ * toplev.c: Likewise.
+ * defaults.h (NEXT_OBJC_RUNTIME): Provide default.
+ * gccspec.c (lang_specific_driver): Adjust use of NEXT_OBJC_RUNTIME.
+ * config/darwin.c (darwin_override_options): Provide default
+ Objective-C abi settings and target conflict checks.
+ * config/darwin.h (SUBTARGET_C_COMMON_OVERRIDE_OPTIONS): Remove unused
+ code. Adjust indenting.
+
2011-11-29 Joseph Myers <joseph@codesourcery.com>
* config/sh/sh.h (enum reg_class, REG_CLASS_NAMES)
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index b53f766..075da2f 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,9 @@
+2011-11-30 Iain Sandoe <iains@gcc.gnu.org>
+
+ * c.opt (fgnu-runtime): Provide full description.
+ (fnext-runtime): Likewise.
+ * c-opts.c (OPT_fgnu_runtime, OPT_fnext_runtime) Remove.
+
2011-11-28 Andrew MacLeod <amacleod@redhat.com>
* c-cpp-builtin.c (cpp_atomic_builtins):New. Emit all atomic
diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
index 465bce3..a08b0e8 100644
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
@@ -604,14 +604,6 @@ c_common_handle_option (size_t scode, const char *arg, int value,
cpp_opts->extended_identifiers = value;
break;
- case OPT_fgnu_runtime:
- flag_next_runtime = !value;
- break;
-
- case OPT_fnext_runtime:
- flag_next_runtime = value;
- break;
-
case OPT_foperator_names:
cpp_opts->operator_names = value;
break;
diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
index 0d7dc88..7694794 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -810,7 +810,7 @@ C++ ObjC++ Var(flag_no_gnu_keywords, 0)
Recognize GNU-defined keywords
fgnu-runtime
-ObjC ObjC++
+ObjC ObjC++ Report RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME)
Generate code for GNU runtime environment
fgnu89-inline
@@ -872,7 +872,7 @@ fnew-abi
C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fnext-runtime
-ObjC ObjC++
+ObjC ObjC++ Report RejectNegative Var(flag_next_runtime)
Generate code for NeXT (Apple Mac OS X) runtime environment
fnil-receivers
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index b1038f4..ba253dd 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -2942,6 +2942,33 @@ darwin_override_options (void)
/* Earlier versions are not specifically accounted, until required. */
}
+ /* In principle, this should be c-family only. However, we really need to
+ set sensible defaults for LTO as well, since the section selection stuff
+ should check for correctness re. the ABI. TODO: check and provide the
+ flags (runtime & ABI) from the lto wrapper). */
+
+ /* Unless set, force ABI=2 for NeXT and m64, 0 otherwise. */
+ if (!global_options_set.x_flag_objc_abi)
+ global_options.x_flag_objc_abi
+ = (!flag_next_runtime)
+ ? 0
+ : (TARGET_64BIT ? 2
+ : (generating_for_darwin_version >= 9) ? 1
+ : 0);
+
+ /* Objective-C family ABI 2 is only valid for next/m64 at present. */
+ if (global_options_set.x_flag_objc_abi && flag_next_runtime)
+ {
+ if (TARGET_64BIT && global_options.x_flag_objc_abi < 2)
+ error_at (UNKNOWN_LOCATION, "%<-fobjc-abi-version%> >= 2 must be"
+ " used for %<-m64%> targets with"
+ " %<-fnext-runtime%>");
+ if (!TARGET_64BIT && global_options.x_flag_objc_abi >= 2)
+ error_at (UNKNOWN_LOCATION, "%<-fobjc-abi-version%> >= 2 is not"
+ " supported on %<-m32%> targets with"
+ " %<-fnext-runtime%>");
+ }
+
/* Don't emit DWARF3/4 unless specifically selected. This is a
workaround for tool bugs. */
if (!global_options_set.x_dwarf_strict)
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index 29a24ddc..fd45904 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -112,7 +112,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* Default to using the NeXT-style runtime, since that's what is
pre-installed on Darwin systems. */
-#define NEXT_OBJC_RUNTIME
+#define NEXT_OBJC_RUNTIME 1
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
we want to retain compatibility with older gcc versions. */
@@ -140,20 +140,8 @@ extern GTY(()) int darwin_ms_struct;
} while (0)
#define SUBTARGET_C_COMMON_OVERRIDE_OPTIONS do { \
- /* Unless set, force ABI=2 for NeXT and m64, 0 otherwise. */ \
- if (!global_options_set.x_flag_objc_abi) \
- global_options.x_flag_objc_abi \
- = (flag_next_runtime && TARGET_64BIT) ? 2 : 0; \
- /* Objective-C family ABI 2 is only valid for next/m64 at present. */ \
- if (global_options_set.x_flag_objc_abi && flag_next_runtime) \
- if (TARGET_64BIT && global_options.x_flag_objc_abi < 2) \
- error_at (UNKNOWN_LOCATION, "%<-fobjc-abi-version%> >= 2 is only" \
- " supported on %<-m64%> targets for" \
- " %<-fnext-runtime%>"); \
- /* Sort out ObjC exceptions: If the runtime is NeXT we default to \
- sjlj for m32 only. */ \
- if (!global_options_set.x_flag_objc_sjlj_exceptions) \
- global_options.x_flag_objc_sjlj_exceptions = \
+ if (!global_options_set.x_flag_objc_sjlj_exceptions) \
+ global_options.x_flag_objc_sjlj_exceptions = \
flag_next_runtime && !TARGET_64BIT; \
if (flag_mkernel || flag_apple_kext) \
{ \
diff --git a/gcc/defaults.h b/gcc/defaults.h
index 40e3263..0e9e2b4 100644
--- a/gcc/defaults.h
+++ b/gcc/defaults.h
@@ -793,6 +793,11 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define ACCUMULATE_OUTGOING_ARGS 0
#endif
+/* By default, use the GNU runtime for Objective C. */
+#ifndef NEXT_OBJC_RUNTIME
+#define NEXT_OBJC_RUNTIME 0
+#endif
+
/* Supply a default definition for PUSH_ARGS. */
#ifndef PUSH_ARGS
#ifdef PUSH_ROUNDING
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index c079ce2..c98b93c 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -5351,13 +5351,18 @@ void sincosl(long double x, long double *sin, long double *cos);
@end defmac
@defmac NEXT_OBJC_RUNTIME
-Define this macro to generate code for Objective-C message sending using
-the calling convention of the NeXT system. This calling convention
-involves passing the object, the selector and the method arguments all
-at once to the method-lookup library function.
-
-The default calling convention passes just the object and the selector
-to the lookup function, which returns a pointer to the method.
+Set this macro to 1 to use the "NeXT" Objective-C message sending conventions
+by default. This calling convention involves passing the object, the selector
+and the method arguments all at once to the method-lookup library function.
+This is the usual setting when targeting Darwin/Mac OS X systems, which have
+the NeXT runtime installed.
+
+If the macro is set to 0, the "GNU" Objective-C message sending convention
+will be used by default. This convention passes just the object and the
+selector to the method-lookup function, which returns a pointer to the method.
+
+In either case, it remains possible to select code-generation for the alternate
+scheme, by means of compiler command line switches.
@end defmac
@node Addressing Modes
diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in
index d03d7f6..d5a7d39 100644
--- a/gcc/doc/tm.texi.in
+++ b/gcc/doc/tm.texi.in
@@ -5289,13 +5289,18 @@ void sincosl(long double x, long double *sin, long double *cos);
@end defmac
@defmac NEXT_OBJC_RUNTIME
-Define this macro to generate code for Objective-C message sending using
-the calling convention of the NeXT system. This calling convention
-involves passing the object, the selector and the method arguments all
-at once to the method-lookup library function.
-
-The default calling convention passes just the object and the selector
-to the lookup function, which returns a pointer to the method.
+Set this macro to 1 to use the "NeXT" Objective-C message sending conventions
+by default. This calling convention involves passing the object, the selector
+and the method arguments all at once to the method-lookup library function.
+This is the usual setting when targeting Darwin/Mac OS X systems, which have
+the NeXT runtime installed.
+
+If the macro is set to 0, the "GNU" Objective-C message sending convention
+will be used by default. This convention passes just the object and the
+selector to the method-lookup function, which returns a pointer to the method.
+
+In either case, it remains possible to select code-generation for the alternate
+scheme, by means of compiler command line switches.
@end defmac
@node Addressing Modes
diff --git a/gcc/flags.h b/gcc/flags.h
index 8cc6670..9791e1b 100644
--- a/gcc/flags.h
+++ b/gcc/flags.h
@@ -56,10 +56,6 @@ extern bool final_insns_dump_p;
/* Nonzero means make permerror produce warnings instead of errors. */
extern int flag_permissive;
-
-/* Generate code for GNU or NeXT Objective-C runtime environment. */
-
-extern int flag_next_runtime;
/* Other basic status info about current function. */
diff --git a/gcc/gccspec.c b/gcc/gccspec.c
index 746ebf0..e161359 100644
--- a/gcc/gccspec.c
+++ b/gcc/gccspec.c
@@ -33,7 +33,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options ATTRIBUTE_UN
/* Systems which use the NeXT runtime by default should arrange
for the shared libgcc to be used when -fgnu-runtime is passed
through specs. */
-#if defined(ENABLE_SHARED_LIBGCC) && ! defined(NEXT_OBJC_RUNTIME)
+#if defined(ENABLE_SHARED_LIBGCC) && ! NEXT_OBJC_RUNTIME
unsigned int i;
/* The new argument list will be contained in this. */
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 9be9109..766aa99 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -146,14 +146,6 @@ HOST_WIDE_INT random_seed;
/* -f flags. */
-/* Generate code for GNU or NeXT Objective-C runtime environment. */
-
-#ifdef NEXT_OBJC_RUNTIME
-int flag_next_runtime = 1;
-#else
-int flag_next_runtime = 0;
-#endif
-
/* Nonzero means make permerror produce warnings instead of errors. */
int flag_permissive = 0;