From b18ca7296ef16700fadac98abe7fac8c8b44b4da Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Mon, 12 Jun 2023 17:02:37 +0200 Subject: [PATCH] Revert "[Driver] Mark many target-specific driver-only options as TargetSpecific" This broke building the TSan runtime on Mac, see comment on https://github.com/llvm/llvm-project/commit/5548843d692a92a7840f14002debc3cebcb3cdc3 > so that they get an error on other targets. This change uses let statements to > apply `Flags = [TargetSpecific]` to options (mostly -m*) without specifying `Flags`. > Follow-up to D151590. > > For some options, e.g. -mdefault-build-attributes (D31813), -mbranch-likely > (D38168), -mfpu=/-mabi= (6890b9b71e525020ab58d436336664beede71575), a warning > seems desired in at least certain cases. This is not the best practice, but this > change works around them by not applying `Flags = [TargetSpecific]`. > > ( > For Intel CPU errata -malign-branch= family options, we also drop the unneeded > NotXarchOption flag. This flag reports an error if the option is used with > -Xarch_*. This error reporting does not seem very useful. > ) This reverts commit 5548843d692a92a7840f14002debc3cebcb3cdc3. --- clang/include/clang/Driver/Options.td | 68 ++++------------------------ clang/test/Driver/munaligned-access-unused.c | 2 +- clang/test/Driver/x86-malign-branch.c | 2 +- 3 files changed, 12 insertions(+), 60 deletions(-) diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 590787c..dd98201 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -251,10 +251,6 @@ def flang_ignored_w_Group : OptionGroup<"">, def clang_ignored_legacy_options_Group : OptionGroup<"">, Group, Flags<[Ignored]>; -def LongDouble_Group : OptionGroup<"">, Group, - DocName<"Long double flags">, - DocBrief<[{Selects the long double implementation}]>; - // Retired with clang-5.0 def : Flag<["-"], "fslp-vectorize-aggressive">, Group; def : Flag<["-"], "fno-slp-vectorize-aggressive">, Group; @@ -3512,39 +3508,36 @@ def mno_iamcu : Flag<["-"], "mno-iamcu">, Group, Flags<[NoXarchOption, def malign_functions_EQ : Joined<["-"], "malign-functions=">, Group; def malign_loops_EQ : Joined<["-"], "malign-loops=">, Group; def malign_jumps_EQ : Joined<["-"], "malign-jumps=">, Group; - -let Flags = [TargetSpecific] in { -def malign_branch_EQ : CommaJoined<["-"], "malign-branch=">, Group, +def malign_branch_EQ : CommaJoined<["-"], "malign-branch=">, Group, Flags<[NoXarchOption]>, HelpText<"Specify types of branches to align">; -def malign_branch_boundary_EQ : Joined<["-"], "malign-branch-boundary=">, Group, +def malign_branch_boundary_EQ : Joined<["-"], "malign-branch-boundary=">, Group, Flags<[NoXarchOption]>, HelpText<"Specify the boundary's size to align branches">; -def mpad_max_prefix_size_EQ : Joined<["-"], "mpad-max-prefix-size=">, Group, +def mpad_max_prefix_size_EQ : Joined<["-"], "mpad-max-prefix-size=">, Group, Flags<[NoXarchOption]>, HelpText<"Specify maximum number of prefixes to use for padding">; -def mbranches_within_32B_boundaries : Flag<["-"], "mbranches-within-32B-boundaries">, Group, +def mbranches_within_32B_boundaries : Flag<["-"], "mbranches-within-32B-boundaries">, Flags<[NoXarchOption]>, Group, HelpText<"Align selected branches (fused, jcc, jmp) within 32-byte boundary">; def mfancy_math_387 : Flag<["-"], "mfancy-math-387">, Group; def mlong_calls : Flag<["-"], "mlong-calls">, Group, HelpText<"Generate branches with extended addressability, usually via indirect jumps.">; -} // let Flags = [TargetSpecific] def mdouble_EQ : Joined<["-"], "mdouble=">, Group, MetaVarName<", Values<"32,64">, Flags<[CC1Option]>, HelpText<"Force double to be bits">, MarshallingInfoInt, "0">; +def LongDouble_Group : OptionGroup<"">, Group, + DocName<"Long double flags">, + DocBrief<[{Selects the long double implementation}]>; def mlong_double_64 : Flag<["-"], "mlong-double-64">, Group, Flags<[CC1Option]>, HelpText<"Force long double to be 64 bits">; def mlong_double_80 : Flag<["-"], "mlong-double-80">, Group, Flags<[CC1Option]>, HelpText<"Force long double to be 80 bits, padded to 128 bits for storage">; def mlong_double_128 : Flag<["-"], "mlong-double-128">, Group, Flags<[CC1Option]>, HelpText<"Force long double to be 128 bits">; -let Flags = [TargetSpecific] in { def mno_long_calls : Flag<["-"], "mno-long-calls">, Group, HelpText<"Restore the default behaviour of not generating long calls">; -} // let Flags = [TargetSpecific] def mexecute_only : Flag<["-"], "mexecute-only">, Group, HelpText<"Disallow generation of data access to code sections (ARM only)">; def mno_execute_only : Flag<["-"], "mno-execute-only">, Group, HelpText<"Allow generation of data access to code sections (ARM only)">; -let Flags = [TargetSpecific] in { def mtp_mode_EQ : Joined<["-"], "mtp=">, Group, Values<"soft,cp15,el0,el1,el2,el3">, HelpText<"Thread pointer access method (AArch32/AArch64 only)">; def mpure_code : Flag<["-"], "mpure-code">, Alias; // Alias for GCC compatibility @@ -3556,7 +3549,6 @@ def mappletvsimulator_version_min_EQ : Joined<["-"], "mappletvsimulator-version- def mwatchos_version_min_EQ : Joined<["-"], "mwatchos-version-min=">, Group; def mwatchos_simulator_version_min_EQ : Joined<["-"], "mwatchos-simulator-version-min=">, Group; def mwatchsimulator_version_min_EQ : Joined<["-"], "mwatchsimulator-version-min=">, Alias; -} // let Flags = [TargetSpecific] def march_EQ : Joined<["-"], "march=">, Group, Flags<[CoreOption,TargetSpecific]>, HelpText<"For a list of available architectures for the target use '-mcpu=help'">; def masm_EQ : Joined<["-"], "masm=">, Group, Flags<[NoXarchOption]>; @@ -3573,9 +3565,7 @@ def mtls_size_EQ : Joined<["-"], "mtls-size=">, Group, Flags<[NoXarchOp def mimplicit_it_EQ : Joined<["-"], "mimplicit-it=">, Group; def mdefault_build_attributes : Joined<["-"], "mdefault-build-attributes">, Group; def mno_default_build_attributes : Joined<["-"], "mno-default-build-attributes">, Group; -let Flags = [TargetSpecific] in { def mconstant_cfstrings : Flag<["-"], "mconstant-cfstrings">, Group; -} // let Flags = [TargetSpecific] def mconsole : Joined<["-"], "mconsole">, Group, Flags<[NoXarchOption]>; def mwindows : Joined<["-"], "mwindows">, Group, Flags<[NoXarchOption]>; def mdll : Joined<["-"], "mdll">, Group, Flags<[NoXarchOption]>; @@ -3584,8 +3574,7 @@ def mthreads : Joined<["-"], "mthreads">, Group, Flags<[NoXarchOption]> def mguard_EQ : Joined<["-"], "mguard=">, Group, Flags<[NoXarchOption]>, HelpText<"Enable or disable Control Flow Guard checks and guard tables emission">, Values<"none,cf,cf-nochecks">; -let Flags = [TargetSpecific] in { -def mcpu_EQ : Joined<["-"], "mcpu=">, Group, +def mcpu_EQ : Joined<["-"], "mcpu=">, Group, TargetSpecific, HelpText<"For a list of available CPUs for the target use '-mcpu=help'">; def mmcu_EQ : Joined<["-"], "mmcu=">, Group; def msim : Flag<["-"], "msim">, Group; @@ -3594,22 +3583,16 @@ def mfix_and_continue : Flag<["-"], "mfix-and-continue">, Group, Group; def minline_all_stringops : Flag<["-"], "minline-all-stringops">, Group; def mno_inline_all_stringops : Flag<["-"], "mno-inline-all-stringops">, Group; -} // let Flags = [TargetSpecific] def malign_double : Flag<["-"], "malign-double">, Group, Flags<[CC1Option]>, HelpText<"Align doubles to two words in structs (x86 only)">, MarshallingInfoFlag>; -let Flags = [TargetSpecific] in { def mfloat_abi_EQ : Joined<["-"], "mfloat-abi=">, Group, Values<"soft,softfp,hard">; def mfpmath_EQ : Joined<["-"], "mfpmath=">, Group; -} // let Flags = [TargetSpecific] def mfpu_EQ : Joined<["-"], "mfpu=">, Group; -let Flags = [TargetSpecific] in { def mhwdiv_EQ : Joined<["-"], "mhwdiv=">, Group; def mhwmult_EQ : Joined<["-"], "mhwmult=">, Group; -} // let Flags = [TargetSpecific] def mglobal_merge : Flag<["-"], "mglobal-merge">, Group, Flags<[CC1Option]>, HelpText<"Enable merging of globals">; -let Flags = [TargetSpecific] in { def mhard_float : Flag<["-"], "mhard-float">, Group; def mios_version_min_EQ : Joined<["-"], "mios-version-min=">, Group, HelpText<"Set iOS deployment target">; @@ -3618,8 +3601,8 @@ def : Joined<["-"], "miphoneos-version-min=">, def mios_simulator_version_min_EQ : Joined<["-"], "mios-simulator-version-min=">, Group; def : Joined<["-"], "miphonesimulator-version-min=">, Alias; def mkernel : Flag<["-"], "mkernel">, Group; -def mlinker_version_EQ : Joined<["-"], "mlinker-version=">, Group, Flags<[NoXarchOption]>; -} // let Flags = [TargetSpecific] +def mlinker_version_EQ : Joined<["-"], "mlinker-version=">, Group, + Flags<[NoXarchOption]>; def mllvm : Separate<["-"], "mllvm">,Flags<[CC1Option,CC1AsOption,CoreOption,FC1Option,FlangOption]>, HelpText<"Additional arguments to forward to LLVM's option processing">, MarshallingInfoStringVector>; @@ -3683,11 +3666,9 @@ def mno_tls_direct_seg_refs : Flag<["-"], "mno-tls-direct-seg-refs">, Group, MarshallingInfoFlag>; def mno_relax_all : Flag<["-"], "mno-relax-all">, Group; -let Flags = [TargetSpecific] in { def mno_rtd: Flag<["-"], "mno-rtd">, Group; def mno_soft_float : Flag<["-"], "mno-soft-float">, Group; def mno_stackrealign : Flag<["-"], "mno-stackrealign">, Group; -} // let Flags = [TargetSpecific] def mretpoline : Flag<["-"], "mretpoline">, Group, Flags<[CoreOption,NoXarchOption]>; def mno_retpoline : Flag<["-"], "mno-retpoline">, Group, Flags<[CoreOption,NoXarchOption]>; @@ -3716,19 +3697,16 @@ def mno_relax : Flag<["-"], "mno-relax">, Group, def msmall_data_limit_EQ : Joined<["-"], "msmall-data-limit=">, Group, Alias, HelpText<"Put global and static data smaller than the limit into a special section">; -let Flags = [TargetSpecific] in { def msave_restore : Flag<["-"], "msave-restore">, Group, HelpText<"Enable using library calls for save and restore">; def mno_save_restore : Flag<["-"], "mno-save-restore">, Group, HelpText<"Disable using library calls for save and restore">; -} // let Flags = [TargetSpecific] def mcmodel_EQ_medlow : Flag<["-"], "mcmodel=medlow">, Group, Flags<[CC1Option]>, Alias, AliasArgs<["small"]>, HelpText<"Equivalent to -mcmodel=small, compatible with RISC-V gcc.">; def mcmodel_EQ_medany : Flag<["-"], "mcmodel=medany">, Group, Flags<[CC1Option]>, Alias, AliasArgs<["medium"]>, HelpText<"Equivalent to -mcmodel=medium, compatible with RISC-V gcc.">; -let Flags = [TargetSpecific] in { def menable_experimental_extensions : Flag<["-"], "menable-experimental-extensions">, Group, HelpText<"Enable use of experimental RISC-V extensions.">; def mrvv_vector_bits_EQ : Joined<["-"], "mrvv-vector-bits=">, Group, @@ -3742,12 +3720,10 @@ def munaligned_access : Flag<["-"], "munaligned-access">, Group, HelpText<"Allow memory accesses to be unaligned (AArch32/AArch64/LoongArch only)">; def mno_unaligned_access : Flag<["-"], "mno-unaligned-access">, Group, HelpText<"Force all memory accesses to be aligned (AArch32/AArch64/LoongArch only)">; -} // let Flags = [TargetSpecific] def mstrict_align : Flag<["-"], "mstrict-align">, Alias, Flags<[CC1Option,HelpHidden]>, HelpText<"Force all memory accesses to be aligned (same as mno-unaligned-access)">; def mno_strict_align : Flag<["-"], "mno-strict-align">, Alias, Flags<[CC1Option,HelpHidden]>, HelpText<"Allow memory accesses to be unaligned (same as munaligned-access)">; -let Flags = [TargetSpecific] in { def mno_thumb : Flag<["-"], "mno-thumb">, Group; def mrestrict_it: Flag<["-"], "mrestrict-it">, Group, HelpText<"Disallow generation of complex IT blocks.">; @@ -3764,7 +3740,6 @@ def mnocrc : Flag<["-"], "mnocrc">, Group, HelpText<"Disallow use of CRC instructions (ARM only)">; def mno_neg_immediates: Flag<["-"], "mno-neg-immediates">, Group, HelpText<"Disallow converting instructions with negative immediates to their negation or inversion.">; -} // let Flags = [TargetSpecific] def mcmse : Flag<["-"], "mcmse">, Group, Flags<[NoXarchOption,CC1Option]>, HelpText<"Allow use of CMSE (Armv8-M Security Extensions)">, @@ -3779,7 +3754,6 @@ defm aapcs_bitfield_width : BoolOption<"f", "aapcs-bitfield-width", BothFlags<[NoXarchOption, CC1Option], " the AAPCS standard requirement stating that" " volatile bit-field width is dictated by the field container type. (ARM only).">>, Group; -let Flags = [TargetSpecific] in { def mframe_chain : Joined<["-"], "mframe-chain=">, Group, Values<"none,aapcs,aapcs+leaf">, HelpText<"Select the frame chain model used to emit frame records (Arm only).">; @@ -3830,7 +3804,6 @@ foreach i = {8-15,18} in def msve_vector_bits_EQ : Joined<["-"], "msve-vector-bits=">, Group, HelpText<"Specify the size in bits of an SVE vector register. Defaults to the" " vector length agnostic value of \"scalable\". (AArch64 only)">; -} // let Flags = [TargetSpecific] def mvscale_min_EQ : Joined<["-"], "mvscale-min=">, Group, Flags<[NoXarchOption,CC1Option]>, @@ -3845,7 +3818,6 @@ def mvscale_max_EQ : Joined<["-"], "mvscale-max=">, def msign_return_address_EQ : Joined<["-"], "msign-return-address=">, Flags<[CC1Option]>, Group, Values<"none,all,non-leaf">, HelpText<"Select return address signing scope">; -let Flags = [TargetSpecific] in { def mbranch_protection_EQ : Joined<["-"], "mbranch-protection=">, Group, HelpText<"Enforce targets of indirect branches and function returns">; @@ -3883,7 +3855,6 @@ def mno_extended_const : Flag<["-"], "mno-extended-const">, Group, HelpText<"Execution model (WebAssembly only)">; -} // let Flags = [TargetSpecific] defm amdgpu_ieee : BoolOption<"m", "amdgpu-ieee", CodeGenOpts<"EmitIEEENaNCompliantInsts">, DefaultTrue, @@ -3917,7 +3888,6 @@ defm unsafe_fp_atomics : BoolOption<"m", "unsafe-fp-atomics", def faltivec : Flag<["-"], "faltivec">, Group, Flags<[NoXarchOption]>; def fno_altivec : Flag<["-"], "fno-altivec">, Group, Flags<[NoXarchOption]>; -let Flags = [TargetSpecific] in { def maltivec : Flag<["-"], "maltivec">, Group; def mno_altivec : Flag<["-"], "mno-altivec">, Group; def mpcrel: Flag<["-"], "mpcrel">, Group; @@ -3927,12 +3897,10 @@ def mno_prefixed: Flag<["-"], "mno-prefixed">, Group; def mspe : Flag<["-"], "mspe">, Group; def mno_spe : Flag<["-"], "mno-spe">, Group; def mefpu2 : Flag<["-"], "mefpu2">, Group; -} // let Flags = [TargetSpecific] def mabi_EQ_quadword_atomics : Flag<["-"], "mabi=quadword-atomics">, Group, Flags<[CC1Option]>, HelpText<"Enable quadword atomics ABI on AIX (AIX PPC64 only). Uses lqarx/stqcx. instructions.">, MarshallingInfoFlag>; -let Flags = [TargetSpecific] in { def mvsx : Flag<["-"], "mvsx">, Group; def mno_vsx : Flag<["-"], "mno-vsx">, Group; def msecure_plt : Flag<["-"], "msecure-plt">, Group; @@ -3995,7 +3963,6 @@ def mrop_protect : Flag<["-"], "mrop-protect">, Group; def mprivileged : Flag<["-"], "mprivileged">, Group; -} // let Flags = [TargetSpecific] def maix_struct_return : Flag<["-"], "maix-struct-return">, Group, Flags<[CC1Option]>, HelpText<"Return all structs in memory (PPC32 only)">; @@ -4006,10 +3973,8 @@ def mxcoff_roptr : Flag<["-"], "mxcoff-roptr">, Group, Flags<[CC1Option HelpText<"Place constant objects with relocatable address values in the RO data section and add -bforceimprw to the linker flags (AIX only)">; def mno_xcoff_roptr : Flag<["-"], "mno-xcoff-roptr">, Group, TargetSpecific; -let Flags = [TargetSpecific] in { def mvx : Flag<["-"], "mvx">, Group; def mno_vx : Flag<["-"], "mno-vx">, Group; -} // let Flags = [TargetSpecific] defm zvector : BoolFOption<"zvector", LangOpts<"ZVector">, DefaultFalse, @@ -4098,8 +4063,6 @@ def mpacked_stack : Flag<["-"], "mpacked-stack">, HelpText<"Use packed stack lay Flags<[CC1Option]>, Group, MarshallingInfoFlag>; def mno_packed_stack : Flag<["-"], "mno-packed-stack">, Flags<[CC1Option]>, Group; - -let Flags = [TargetSpecific] in { def mips16 : Flag<["-"], "mips16">, Group; def mno_mips16 : Flag<["-"], "mno-mips16">, Group; def mmicromips : Flag<["-"], "mmicromips">, Group; @@ -4115,12 +4078,10 @@ def mno_check_zero_division : Flag<["-"], "mno-check-zero-division">, def mfix4300 : Flag<["-"], "mfix4300">, Group; def mcompact_branches_EQ : Joined<["-"], "mcompact-branches=">, Group; -} // let Flags = [TargetSpecific] def mbranch_likely : Flag<["-"], "mbranch-likely">, Group, IgnoredGCCCompat; def mno_branch_likely : Flag<["-"], "mno-branch-likely">, Group, IgnoredGCCCompat; -let Flags = [TargetSpecific] in { def mindirect_jump_EQ : Joined<["-"], "mindirect-jump=">, Group, HelpText<"Change indirect jump instructions to inhibit speculation">; @@ -4186,7 +4147,6 @@ def mvirt : Flag<["-"], "mvirt">, Group; def mno_virt : Flag<["-"], "mno-virt">, Group; def mginv : Flag<["-"], "mginv">, Group; def mno_ginv : Flag<["-"], "mno-ginv">, Group; -} // let Flags = [TargetSpecific] def mips1 : Flag<["-"], "mips1">, Alias, AliasArgs<["mips1"]>, Group, HelpText<"Equivalent to -march=mips1">, Flags<[HelpHidden]>; @@ -4662,7 +4622,6 @@ def _write_user_dependencies : Flag<["--"], "write-user-dependencies">, Alias, Flags<[Unsupported]>; // Hexagon feature flags. -let Flags = [TargetSpecific] in { def mieee_rnd_near : Flag<["-"], "mieee-rnd-near">, Group; def mv5 : Flag<["-"], "mv5">, Group, Alias, @@ -4716,7 +4675,6 @@ def mno_hexagon_hvx_ieee_fp : Flag<["-"], "mno-hvx-ieee-fp">, HelpText<"Disable Hexagon HVX IEEE floating-point">; def ffixed_r19: Flag<["-"], "ffixed-r19">, Group, HelpText<"Reserve register r19 (Hexagon only)">; -} // let Flags = [TargetSpecific] def mmemops : Flag<["-"], "mmemops">, Group, Flags<[CC1Option]>, HelpText<"Enable generation of memop instructions">; def mno_memops : Flag<["-"], "mno-memops">, Group, @@ -4737,7 +4695,6 @@ def mcabac: Flag<["-"], "mcabac">, Group, HelpText<"Enable CABAC instructions">; // SPARC feature flags -let Flags = [TargetSpecific] in { def mfpu : Flag<["-"], "mfpu">, Group; def mno_fpu : Flag<["-"], "mno-fpu">, Group; def mfsmuld : Flag<["-"], "mfsmuld">, Group; @@ -4752,10 +4709,8 @@ def mvis3 : Flag<["-"], "mvis3">, Group; def mno_vis3 : Flag<["-"], "mno-vis3">, Group; def mhard_quad_float : Flag<["-"], "mhard-quad-float">, Group; def msoft_quad_float : Flag<["-"], "msoft-quad-float">, Group; -} // let Flags = [TargetSpecific] // M68k features flags -let Flags = [TargetSpecific] in { def m68000 : Flag<["-"], "m68000">, Group; def m68010 : Flag<["-"], "m68010">, Group; def m68020 : Flag<["-"], "m68020">, Group; @@ -4771,10 +4726,8 @@ foreach i = {0-6} in foreach i = {0-7} in def ffixed_d#i : Flag<["-"], "ffixed-d"#i>, Group, HelpText<"Reserve the d"#i#" register (M68k only)">; -} // let Flags = [TargetSpecific] // X86 feature flags -let Flags = [TargetSpecific] in { def mx87 : Flag<["-"], "mx87">, Group; def mno_x87 : Flag<["-"], "mno-x87">, Group; def m80387 : Flag<["-"], "m80387">, Alias; @@ -4981,7 +4934,6 @@ def mretpoline_external_thunk : Flag<["-"], "mretpoline-external-thunk">, Group< def mno_retpoline_external_thunk : Flag<["-"], "mno-retpoline-external-thunk">, Group; def mvzeroupper : Flag<["-"], "mvzeroupper">, Group; def mno_vzeroupper : Flag<["-"], "mno-vzeroupper">, Group; -} // let Flags = [TargetSpecific] // These are legacy user-facing driver-level option spellings. They are always // aliases for options that are spelled using the more common Unix / GNU flag diff --git a/clang/test/Driver/munaligned-access-unused.c b/clang/test/Driver/munaligned-access-unused.c index 958a611..1654692 100644 --- a/clang/test/Driver/munaligned-access-unused.c +++ b/clang/test/Driver/munaligned-access-unused.c @@ -5,4 +5,4 @@ // RUN: %clang --target=x86_64 -mstrict-align -fsyntax-only %s -### 2>&1 | FileCheck %s -DOPTION=strict-align // RUN: %clang --target=x86_64 -mno-strict-align -fsyntax-only %s -### 2>&1 | FileCheck %s -DOPTION=no-strict-align -// CHECK: error: unsupported option '-m{{(no-)?}}unaligned-access' for target '{{.*}}' +// CHECK: clang: warning: argument unused during compilation: '-m[[OPTION]]' [-Wunused-command-line-argument] diff --git a/clang/test/Driver/x86-malign-branch.c b/clang/test/Driver/x86-malign-branch.c index a72125c..a71b181 100644 --- a/clang/test/Driver/x86-malign-branch.c +++ b/clang/test/Driver/x86-malign-branch.c @@ -41,4 +41,4 @@ // RUN: %clang -target aarch64 -malign-branch-boundary=7 %s -c -### 2>&1 | FileCheck --check-prefix=UNUSED %s // RUN: %clang -target aarch64 -mpad-max-prefix-size=15 %s -c -### 2>&1 | FileCheck --check-prefix=UNUSED %s // RUN: %clang -target aarch64 -mbranches-within-32B-boundaries %s -c -### 2>&1 | FileCheck --check-prefix=UNUSED %s -// UNUSED: error: unsupported option '{{.*}}' for target '{{.*}}' +// UNUSED: warning: argument unused -- 2.7.4