forked from OSchip/llvm-project
Driver: Remove support for -fobjc-gc*
As a first step toward removing Objective-C garbage collection from Clang, remove support from the driver. I'm hoping this will flush out any expected bots/configurations/whatever that might rely on it. I've left the options behind temporarily in -cc1 to keep tests passing. I'll kill them off entirely in a follow up when I've had a chance to update/delete the rest of Clang. llvm-svn: 288872
This commit is contained in:
parent
864ab5c516
commit
c9073fa806
|
@ -167,16 +167,6 @@ Language Selection and Mode Options
|
||||||
|
|
||||||
Enable the "Blocks" language feature.
|
Enable the "Blocks" language feature.
|
||||||
|
|
||||||
.. option:: -fobjc-gc-only
|
|
||||||
|
|
||||||
Indicate that Objective-C code should be compiled in GC-only mode, which only
|
|
||||||
works when Objective-C Garbage Collection is enabled.
|
|
||||||
|
|
||||||
.. option:: -fobjc-gc
|
|
||||||
|
|
||||||
Indicate that Objective-C code should be compiled in hybrid-GC mode, which
|
|
||||||
works with both GC and non-GC mode.
|
|
||||||
|
|
||||||
.. option:: -fobjc-abi-version=version
|
.. option:: -fobjc-abi-version=version
|
||||||
|
|
||||||
Select the Objective-C ABI version to use. Available versions are 1 (legacy
|
Select the Objective-C ABI version to use. Available versions are 1 (legacy
|
||||||
|
|
|
@ -137,8 +137,6 @@ def err_drv_preamble_format : Error<
|
||||||
"incorrect format for -preamble-bytes=N,END">;
|
"incorrect format for -preamble-bytes=N,END">;
|
||||||
def err_drv_conflicting_deployment_targets : Error<
|
def err_drv_conflicting_deployment_targets : Error<
|
||||||
"conflicting deployment targets, both '%0' and '%1' are present in environment">;
|
"conflicting deployment targets, both '%0' and '%1' are present in environment">;
|
||||||
def err_drv_objc_gc_arr : Error<
|
|
||||||
"cannot specify both '-fobjc-arc' and '%0'">;
|
|
||||||
def err_arc_unsupported_on_runtime : Error<
|
def err_arc_unsupported_on_runtime : Error<
|
||||||
"-fobjc-arc is not supported on platforms using the legacy runtime">;
|
"-fobjc-arc is not supported on platforms using the legacy runtime">;
|
||||||
def err_arc_unsupported_on_toolchain : Error< // feel free to generalize this
|
def err_arc_unsupported_on_toolchain : Error< // feel free to generalize this
|
||||||
|
@ -211,8 +209,6 @@ def warn_drv_overriding_flag_option : Warning<
|
||||||
def warn_drv_treating_input_as_cxx : Warning<
|
def warn_drv_treating_input_as_cxx : Warning<
|
||||||
"treating '%0' input as '%1' when in C++ mode, this behavior is deprecated">,
|
"treating '%0' input as '%1' when in C++ mode, this behavior is deprecated">,
|
||||||
InGroup<Deprecated>;
|
InGroup<Deprecated>;
|
||||||
def warn_drv_objc_gc_unsupported : Warning<
|
|
||||||
"Objective-C garbage collection is not supported on this platform, ignoring '%0'">;
|
|
||||||
def warn_drv_pch_not_first_include : Warning<
|
def warn_drv_pch_not_first_include : Warning<
|
||||||
"precompiled header '%0' was ignored because '%1' is not first '-include'">;
|
"precompiled header '%0' was ignored because '%1' is not first '-include'">;
|
||||||
def warn_missing_sysroot : Warning<"no such sysroot directory: '%0'">,
|
def warn_missing_sysroot : Warning<"no such sysroot directory: '%0'">,
|
||||||
|
|
|
@ -641,6 +641,12 @@ def fdefault_calling_conv_EQ : Joined<["-"], "fdefault-calling-conv=">,
|
||||||
def finclude_default_header : Flag<["-"], "finclude-default-header">,
|
def finclude_default_header : Flag<["-"], "finclude-default-header">,
|
||||||
HelpText<"Include the default header file for OpenCL">;
|
HelpText<"Include the default header file for OpenCL">;
|
||||||
|
|
||||||
|
// FIXME: Remove these entirely once functionality/tests have been excised.
|
||||||
|
def fobjc_gc_only : Flag<["-"], "fobjc-gc-only">, Group<f_Group>,
|
||||||
|
HelpText<"Use GC exclusively for Objective-C related memory management">;
|
||||||
|
def fobjc_gc : Flag<["-"], "fobjc-gc">, Group<f_Group>,
|
||||||
|
HelpText<"Enable Objective-C garbage collection">;
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// Header Search Options
|
// Header Search Options
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
|
@ -1092,10 +1092,6 @@ def : Flag<["-"], "faligned-new">, Alias<faligned_allocation>;
|
||||||
def : Flag<["-"], "fno-aligned-new">, Alias<fno_aligned_allocation>;
|
def : Flag<["-"], "fno-aligned-new">, Alias<fno_aligned_allocation>;
|
||||||
def faligned_new_EQ : Joined<["-"], "faligned-new=">;
|
def faligned_new_EQ : Joined<["-"], "faligned-new=">;
|
||||||
|
|
||||||
def fobjc_gc_only : Flag<["-"], "fobjc-gc-only">, Group<f_Group>, Flags<[CC1Option]>,
|
|
||||||
HelpText<"Use GC exclusively for Objective-C related memory management">;
|
|
||||||
def fobjc_gc : Flag<["-"], "fobjc-gc">, Group<f_Group>, Flags<[CC1Option]>,
|
|
||||||
HelpText<"Enable Objective-C garbage collection">;
|
|
||||||
def fobjc_legacy_dispatch : Flag<["-"], "fobjc-legacy-dispatch">, Group<f_Group>;
|
def fobjc_legacy_dispatch : Flag<["-"], "fobjc-legacy-dispatch">, Group<f_Group>;
|
||||||
def fobjc_new_property : Flag<["-"], "fobjc-new-property">, Group<clang_ignored_f_Group>;
|
def fobjc_new_property : Flag<["-"], "fobjc-new-property">, Group<clang_ignored_f_Group>;
|
||||||
def fobjc_infer_related_result_type : Flag<["-"], "fobjc-infer-related-result-type">,
|
def fobjc_infer_related_result_type : Flag<["-"], "fobjc-infer-related-result-type">,
|
||||||
|
|
|
@ -6005,31 +6005,12 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
||||||
if (rewriteKind != RK_None)
|
if (rewriteKind != RK_None)
|
||||||
CmdArgs.push_back("-fno-objc-infer-related-result-type");
|
CmdArgs.push_back("-fno-objc-infer-related-result-type");
|
||||||
|
|
||||||
// Handle -fobjc-gc and -fobjc-gc-only. They are exclusive, and -fobjc-gc-only
|
|
||||||
// takes precedence.
|
|
||||||
const Arg *GCArg = Args.getLastArg(options::OPT_fobjc_gc_only);
|
|
||||||
if (!GCArg)
|
|
||||||
GCArg = Args.getLastArg(options::OPT_fobjc_gc);
|
|
||||||
if (GCArg) {
|
|
||||||
if (ARC) {
|
|
||||||
D.Diag(diag::err_drv_objc_gc_arr) << GCArg->getAsString(Args);
|
|
||||||
} else if (getToolChain().SupportsObjCGC()) {
|
|
||||||
GCArg->render(Args, CmdArgs);
|
|
||||||
} else {
|
|
||||||
// FIXME: We should move this to a hard error.
|
|
||||||
D.Diag(diag::warn_drv_objc_gc_unsupported) << GCArg->getAsString(Args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pass down -fobjc-weak or -fno-objc-weak if present.
|
// Pass down -fobjc-weak or -fno-objc-weak if present.
|
||||||
if (types::isObjC(InputType)) {
|
if (types::isObjC(InputType)) {
|
||||||
auto WeakArg = Args.getLastArg(options::OPT_fobjc_weak,
|
auto WeakArg = Args.getLastArg(options::OPT_fobjc_weak,
|
||||||
options::OPT_fno_objc_weak);
|
options::OPT_fno_objc_weak);
|
||||||
if (!WeakArg) {
|
if (!WeakArg) {
|
||||||
// nothing to do
|
// nothing to do
|
||||||
} else if (GCArg) {
|
|
||||||
if (WeakArg->getOption().matches(options::OPT_fobjc_weak))
|
|
||||||
D.Diag(diag::err_objc_weak_with_gc);
|
|
||||||
} else if (!objcRuntime.allowsWeak()) {
|
} else if (!objcRuntime.allowsWeak()) {
|
||||||
if (WeakArg->getOption().matches(options::OPT_fobjc_weak))
|
if (WeakArg->getOption().matches(options::OPT_fobjc_weak))
|
||||||
D.Diag(diag::err_objc_weak_unsupported);
|
D.Diag(diag::err_objc_weak_unsupported);
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
// Check that we warn, but accept, -fobjc-gc for iPhone OS.
|
|
||||||
|
|
||||||
// RUN: %clang -target i386-apple-darwin9 -miphoneos-version-min=3.0 -stdlib=platform -fobjc-gc -flto -S -o %t %s 2> %t.err
|
|
||||||
// RUN: FileCheck --check-prefix=IPHONE_OBJC_GC_LL %s < %t
|
|
||||||
// RUN: FileCheck --check-prefix=IPHONE_OBJC_GC_STDERR %s < %t.err
|
|
||||||
|
|
||||||
// IPHONE_OBJC_GC_LL: define void @f0
|
|
||||||
// IPHONE_OBJC_GC_LL-NOT: objc_assign_ivar
|
|
||||||
// IPHONE_OBJC_GC_LL: }
|
|
||||||
|
|
||||||
// IPHONE_OBJC_GC_STDERR: warning: Objective-C garbage collection is not supported on this platform, ignoring '-fobjc-gc'
|
|
||||||
|
|
||||||
@interface A {
|
|
||||||
@public
|
|
||||||
id x;
|
|
||||||
}
|
|
||||||
@end
|
|
||||||
|
|
||||||
void f0(A *a, id x) { a->x = x; }
|
|
|
@ -18,7 +18,7 @@ This test serves two purposes:
|
||||||
|
|
||||||
The list of warnings below should NEVER grow. It should gradually shrink to 0.
|
The list of warnings below should NEVER grow. It should gradually shrink to 0.
|
||||||
|
|
||||||
CHECK: Warnings without flags (80):
|
CHECK: Warnings without flags (79):
|
||||||
CHECK-NEXT: ext_excess_initializers
|
CHECK-NEXT: ext_excess_initializers
|
||||||
CHECK-NEXT: ext_excess_initializers_in_char_array_initializer
|
CHECK-NEXT: ext_excess_initializers_in_char_array_initializer
|
||||||
CHECK-NEXT: ext_expected_semi_decl_list
|
CHECK-NEXT: ext_expected_semi_decl_list
|
||||||
|
@ -54,7 +54,6 @@ CHECK-NEXT: warn_delete_array_type
|
||||||
CHECK-NEXT: warn_double_const_requires_fp64
|
CHECK-NEXT: warn_double_const_requires_fp64
|
||||||
CHECK-NEXT: warn_drv_assuming_mfloat_abi_is
|
CHECK-NEXT: warn_drv_assuming_mfloat_abi_is
|
||||||
CHECK-NEXT: warn_drv_clang_unsupported
|
CHECK-NEXT: warn_drv_clang_unsupported
|
||||||
CHECK-NEXT: warn_drv_objc_gc_unsupported
|
|
||||||
CHECK-NEXT: warn_drv_pch_not_first_include
|
CHECK-NEXT: warn_drv_pch_not_first_include
|
||||||
CHECK-NEXT: warn_dup_category_def
|
CHECK-NEXT: warn_dup_category_def
|
||||||
CHECK-NEXT: warn_enum_value_overflow
|
CHECK-NEXT: warn_enum_value_overflow
|
||||||
|
|
Loading…
Reference in New Issue