Author: Fangrui Song Date: 2024-08-15T15:52:20-07:00 New Revision: 3333ec1183803fa5a2353e710b8b22db6a72e292
URL: https://github.com/llvm/llvm-project/commit/3333ec1183803fa5a2353e710b8b22db6a72e292 DIFF: https://github.com/llvm/llvm-project/commit/3333ec1183803fa5a2353e710b8b22db6a72e292.diff LOG: [Driver] Make CodeGenOptions name match MCTargetOptions names * Initialize `X86RelaxRelocations`. * Fix #96860 test to actually test -Wa,-msse2avx for non-x86. Added: Modified: clang/include/clang/Basic/CodeGenOptions.def clang/include/clang/Driver/Options.td clang/lib/CodeGen/BackendUtil.cpp clang/test/Driver/msse2avx.c clang/tools/driver/cc1as_main.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Basic/CodeGenOptions.def b/clang/include/clang/Basic/CodeGenOptions.def index 5728ab8d86702..09e892d6d4def 100644 --- a/clang/include/clang/Basic/CodeGenOptions.def +++ b/clang/include/clang/Basic/CodeGenOptions.def @@ -37,8 +37,6 @@ VALUE_CODEGENOPT(Name, Bits, Default) CODEGENOPT(DisableIntegratedAS, 1, 0) ///< -no-integrated-as CODEGENOPT(Crel, 1, 0) ///< -Wa,--crel -CODEGENOPT(RelaxELFRelocations, 1, 1) ///< -Wa,-mrelax-relocations={yes,no} -CODEGENOPT(SSE2AVX , 1, 0) ///< -msse2avx CODEGENOPT(AsmVerbose , 1, 0) ///< -dA, -fverbose-asm. CODEGENOPT(PreserveAsmComments, 1, 1) ///< -dA, -fno-preserve-as-comments. CODEGENOPT(AssumeSaneOperatorNew , 1, 1) ///< implicit __attribute__((malloc)) operator new @@ -194,6 +192,8 @@ CODEGENOPT(HIPSaveKernelArgName, 1, 0) ///< Set when -fhip-kernel-arg-name is en CODEGENOPT(UniqueInternalLinkageNames, 1, 0) ///< Internal Linkage symbols get unique names. CODEGENOPT(SplitMachineFunctions, 1, 0) ///< Split machine functions using profile information. CODEGENOPT(PPCUseFullRegisterNames, 1, 0) ///< Print full register names in assembly +CODEGENOPT(X86RelaxRelocations, 1, 1) ///< -Wa,-mrelax-relocations={yes,no} +CODEGENOPT(X86Sse2Avx , 1, 0) ///< -Wa,-msse2avx /// When false, this attempts to generate code as if the result of an /// overflowing conversion matches the overflowing behavior of a target's native diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 40df91dc3fe0e..c9ed08c20fc04 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -5231,7 +5231,7 @@ let Flags = [TargetSpecific] in { def msse2avx : Flag<["-"], "msse2avx">, Group<m_Group>, Visibility<[ClangOption, CC1Option, CC1AsOption]>, HelpText<"Specify that the assembler should encode SSE instructions with VEX prefix">, - MarshallingInfoFlag<CodeGenOpts<"SSE2AVX">>; + MarshallingInfoFlag<CodeGenOpts<"X86Sse2Avx">>; } // let Flags = [TargetSpecific] defm zvector : BoolFOption<"zvector", @@ -7133,7 +7133,7 @@ def crel : Flag<["--"], "crel">, MarshallingInfoFlag<CodeGenOpts<"Crel">>; def mrelax_relocations_no : Flag<["-"], "mrelax-relocations=no">, HelpText<"Disable x86 relax relocations">, - MarshallingInfoNegativeFlag<CodeGenOpts<"RelaxELFRelocations">>; + MarshallingInfoNegativeFlag<CodeGenOpts<"X86RelaxRelocations">>; def msave_temp_labels : Flag<["-"], "msave-temp-labels">, HelpText<"Save temporary labels in the symbol table. " "Note this may change .s semantics and shouldn't generally be used " diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index 81e6702d5de66..34c08818dbb9a 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -471,7 +471,7 @@ static bool initTargetOptions(DiagnosticsEngine &Diags, Options.MCOptions.Dwarf64 = CodeGenOpts.Dwarf64; Options.MCOptions.PreserveAsmComments = CodeGenOpts.PreserveAsmComments; Options.MCOptions.Crel = CodeGenOpts.Crel; - Options.MCOptions.X86RelaxRelocations = CodeGenOpts.RelaxELFRelocations; + Options.MCOptions.X86RelaxRelocations = CodeGenOpts.X86RelaxRelocations; Options.MCOptions.CompressDebugSections = CodeGenOpts.getCompressDebugSections(); Options.MCOptions.ABIName = TargetOpts.ABI; diff --git a/clang/test/Driver/msse2avx.c b/clang/test/Driver/msse2avx.c index a63ac9a6c8668..829b1b2b79360 100644 --- a/clang/test/Driver/msse2avx.c +++ b/clang/test/Driver/msse2avx.c @@ -1,7 +1,7 @@ -// RUN: %clang -### -c -target x86_64 -march=x86-64 -Xassembler -msse2avx %s 2>&1 | FileCheck %s -// RUN: %clang -### -c -target x86_64 -march=x86-64 -x assembler -Xassembler -msse2avx %s 2>&1 | FileCheck %s +// RUN: %clang -### -c --target=x86_64 -march=x86-64 -Wa,-msse2avx %s 2>&1 | FileCheck %s +// RUN: %clang -### -c --target=x86_64 -march=x86-64 -x assembler -Xassembler -msse2avx %s 2>&1 | FileCheck %s // CHECK: "-msse2avx" -// RUN: not %clang -### -c -target aarch64 -march=armv8a -msse2avx %s 2>&1 | FileCheck --check-prefix=ERR %s -// ERR: error: unsupported option '-msse2avx' for target 'aarch64' +// RUN: not %clang -### -c --target=aarch64 -march=armv8a -Wa,-msse2avx %s 2>&1 | FileCheck --check-prefix=ERR %s +// ERR: error: unsupported argument '-msse2avx' to option '-Wa,' diff --git a/clang/tools/driver/cc1as_main.cpp b/clang/tools/driver/cc1as_main.cpp index 78019d39742e6..070cf8b44e8eb 100644 --- a/clang/tools/driver/cc1as_main.cpp +++ b/clang/tools/driver/cc1as_main.cpp @@ -96,10 +96,6 @@ struct AssemblerInvocation { LLVM_PREFERRED_TYPE(bool) unsigned GenDwarfForAssembly : 1; LLVM_PREFERRED_TYPE(bool) - unsigned RelaxELFRelocations : 1; - LLVM_PREFERRED_TYPE(bool) - unsigned SSE2AVX : 1; - LLVM_PREFERRED_TYPE(bool) unsigned Dwarf64 : 1; unsigned DwarfVersion; std::string DwarfDebugFlags; @@ -169,6 +165,11 @@ struct AssemblerInvocation { LLVM_PREFERRED_TYPE(bool) unsigned Crel : 1; + LLVM_PREFERRED_TYPE(bool) + unsigned X86RelaxRelocations : 1; + LLVM_PREFERRED_TYPE(bool) + unsigned X86Sse2Avx : 1; + /// The name of the relocation model to use. std::string RelocationModel; @@ -199,7 +200,6 @@ struct AssemblerInvocation { ShowInst = 0; ShowEncoding = 0; RelaxAll = 0; - SSE2AVX = 0; NoExecStack = 0; FatalWarnings = 0; NoWarn = 0; @@ -211,6 +211,8 @@ struct AssemblerInvocation { EmitDwarfUnwind = EmitDwarfUnwindType::Default; EmitCompactUnwindNonCanonical = false; Crel = false; + X86RelaxRelocations = 0; + X86Sse2Avx = 0; } static bool CreateFromArgs(AssemblerInvocation &Res, @@ -290,8 +292,6 @@ bool AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts, .Default(llvm::DebugCompressionType::None); } - Opts.RelaxELFRelocations = !Args.hasArg(OPT_mrelax_relocations_no); - Opts.SSE2AVX = Args.hasArg(OPT_msse2avx); if (auto *DwarfFormatArg = Args.getLastArg(OPT_gdwarf64, OPT_gdwarf32)) Opts.Dwarf64 = DwarfFormatArg->getOption().matches(OPT_gdwarf64); Opts.DwarfVersion = getLastArgIntValue(Args, OPT_dwarf_version_EQ, 2, Diags); @@ -382,6 +382,8 @@ bool AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts, Opts.EmitCompactUnwindNonCanonical = Args.hasArg(OPT_femit_compact_unwind_non_canonical); Opts.Crel = Args.hasArg(OPT_crel); + Opts.X86RelaxRelocations = !Args.hasArg(OPT_mrelax_relocations_no); + Opts.X86Sse2Avx = Args.hasArg(OPT_msse2avx); Opts.AsSecureLogFile = Args.getLastArgValue(OPT_as_secure_log_file); @@ -440,8 +442,8 @@ static bool ExecuteAssemblerImpl(AssemblerInvocation &Opts, MCOptions.EmitCompactUnwindNonCanonical = Opts.EmitCompactUnwindNonCanonical; MCOptions.MCSaveTempLabels = Opts.SaveTemporaryLabels; MCOptions.Crel = Opts.Crel; - MCOptions.X86RelaxRelocations = Opts.RelaxELFRelocations; - MCOptions.X86Sse2Avx = Opts.SSE2AVX; + MCOptions.X86RelaxRelocations = Opts.X86RelaxRelocations; + MCOptions.X86Sse2Avx = Opts.X86Sse2Avx; MCOptions.CompressDebugSections = Opts.CompressDebugSections; MCOptions.AsSecureLogFile = Opts.AsSecureLogFile; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits