From fea3ca9130aa2ba28ea5176b647c80f2ebc7670a Mon Sep 17 00:00:00 2001 From: Iain Sandoe Date: Wed, 30 Nov 2011 10:42:58 +0000 Subject: [PATCH] shift flag_next/gnu_runtime to modern opts system. gcc: * 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. gcc/c-family: * c.opt (fgnu-runtime): Provide full description. (fnext-runtime): Likewise. * c-opts.c (OPT_fgnu_runtime, OPT_fnext_runtime) Remove. From-SVN: r181837 --- gcc/ChangeLog | 13 +++++++++++++ gcc/c-family/ChangeLog | 6 ++++++ gcc/c-family/c-opts.c | 8 -------- gcc/c-family/c.opt | 4 ++-- gcc/config/darwin.c | 27 +++++++++++++++++++++++++++ gcc/config/darwin.h | 18 +++--------------- gcc/defaults.h | 5 +++++ gcc/doc/tm.texi | 17 +++++++++++------ gcc/doc/tm.texi.in | 17 +++++++++++------ gcc/flags.h | 4 ---- gcc/gccspec.c | 2 +- gcc/toplev.c | 8 -------- 12 files changed, 79 insertions(+), 50 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fcd13905cc3..5091c39dd8d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,16 @@ +2011-11-30 Iain Sandoe + + * 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 * config/sh/sh.h (enum reg_class, REG_CLASS_NAMES) diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index b53f76670bb..075da2f43b3 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,9 @@ +2011-11-30 Iain Sandoe + + * 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 * 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 465bce35de3..a08b0e80a56 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 0d7dc88b1ca..7694794e0c6 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 b1038f40660..ba253dd7dbf 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 29a24ddc6d6..fd4590404bd 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 40e3263c9e1..0e9e2b497ba 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 c079ce29b7e..c98b93c985b 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. +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. -The default calling convention passes just the object and the selector -to the lookup function, which returns a pointer to the method. +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 d03d7f656a2..d5a7d3978e3 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. +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. -The default calling convention passes just the object and the selector -to the lookup function, which returns a pointer to the method. +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 8cc6670ef1b..9791e1b2344 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 746ebf0c420..e1613594fc4 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 9be910970b4..766aa9917c3 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;