llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-driver Author: None (yingopq) <details> <summary>Changes</summary> --- Full diff: https://github.com/llvm/llvm-project/pull/99615.diff 6 Files Affected: - (modified) clang/include/clang/Basic/CodeGenOptions.def (+2) - (modified) clang/include/clang/Driver/Options.td (+6-2) - (modified) clang/lib/CodeGen/BackendUtil.cpp (+2) - (modified) clang/lib/Driver/ToolChains/Clang.cpp (+4) - (modified) clang/tools/driver/cc1as_main.cpp (+10) - (modified) llvm/include/llvm/MC/MCTargetOptions.h (+3) ``````````diff diff --git a/clang/include/clang/Basic/CodeGenOptions.def b/clang/include/clang/Basic/CodeGenOptions.def index f671b780bcbeb..1d84be7520422 100644 --- a/clang/include/clang/Basic/CodeGenOptions.def +++ b/clang/include/clang/Basic/CodeGenOptions.def @@ -178,6 +178,8 @@ CODEGENOPT(MergeAllConstants , 1, 1) ///< Merge identical constants. CODEGENOPT(MergeFunctions , 1, 0) ///< Set when -fmerge-functions is enabled. CODEGENOPT(NoCommon , 1, 0) ///< Set when -fno-common or C++ is enabled. CODEGENOPT(NoExecStack , 1, 0) ///< Set when -Wa,--noexecstack is enabled. +CODEGENOPT(Msa , 1, 0) ///< Set when -Wa,-mmsa is enabled. +CODEGENOPT(NoMsa , 1, 0) ///< Set when -Wa,-mno-msa is enabled. CODEGENOPT(FatalWarnings , 1, 0) ///< Set when -Wa,--fatal-warnings is ///< enabled. CODEGENOPT(NoWarn , 1, 0) ///< Set when -Wa,--no-warn is enabled. diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 12b20fe04675b..0d5c68fc3a0d0 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -5337,9 +5337,13 @@ def mmadd4 : Flag<["-"], "mmadd4">, Group<m_mips_Features_Group>, def mno_madd4 : Flag<["-"], "mno-madd4">, Group<m_mips_Features_Group>, HelpText<"Disable the generation of 4-operand madd.s, madd.d and related instructions.">; def mmsa : Flag<["-"], "mmsa">, Group<m_mips_Features_Group>, - HelpText<"Enable MSA ASE (MIPS only)">; + Visibility<[ClangOption, CC1AsOption]>, + HelpText<"Enable MSA ASE (MIPS only)">, + MarshallingInfoFlag<CodeGenOpts<"Msa">>; def mno_msa : Flag<["-"], "mno-msa">, Group<m_mips_Features_Group>, - HelpText<"Disable MSA ASE (MIPS only)">; + Visibility<[ClangOption, CC1AsOption]>, + HelpText<"Disable MSA ASE (MIPS only)">, + MarshallingInfoFlag<CodeGenOpts<"NoMsa">>; def mmt : Flag<["-"], "mmt">, Group<m_mips_Features_Group>, HelpText<"Enable MT ASE (MIPS only)">; def mno_mt : Flag<["-"], "mno-mt">, Group<m_mips_Features_Group>, diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index e765bbf637a66..6901a6d88313f 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -463,6 +463,8 @@ static bool initTargetOptions(DiagnosticsEngine &Diags, ? llvm::MCTargetOptions::DisableDwarfDirectory : llvm::MCTargetOptions::EnableDwarfDirectory; Options.MCOptions.MCNoExecStack = CodeGenOpts.NoExecStack; + Options.MCOptions.MCMsa = CodeGenOpts.Msa; + Options.MCOptions.MCNoMsa = CodeGenOpts.NoMsa; Options.MCOptions.MCIncrementalLinkerCompatible = CodeGenOpts.IncrementalLinkerCompatible; Options.MCOptions.MCFatalWarnings = CodeGenOpts.FatalWarnings; diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 1fd6fba210042..e4a2d4e84bdca 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -2630,6 +2630,10 @@ static void CollectArgsForIntegratedAssembler(Compilation &C, CmdArgs.push_back("-massembler-no-warn"); } else if (Value == "--noexecstack") { UseNoExecStack = true; + } else if (Value == "-mmsa") { + CmdArgs.push_back("-mmsa"); + } else if (Value == "-mno-msa") { + CmdArgs.push_back("-mno-msa"); } else if (Value.starts_with("-compress-debug-sections") || Value.starts_with("--compress-debug-sections") || Value == "-nocompress-debug-sections" || diff --git a/clang/tools/driver/cc1as_main.cpp b/clang/tools/driver/cc1as_main.cpp index ec93f092713f5..4bca886714a63 100644 --- a/clang/tools/driver/cc1as_main.cpp +++ b/clang/tools/driver/cc1as_main.cpp @@ -168,6 +168,10 @@ struct AssemblerInvocation { LLVM_PREFERRED_TYPE(bool) unsigned Crel : 1; + LLVM_PREFERRED_TYPE(bool) + unsigned Msa : 1; + LLVM_PREFERRED_TYPE(bool) + unsigned NoMsa : 1; /// The name of the relocation model to use. std::string RelocationModel; @@ -211,6 +215,8 @@ struct AssemblerInvocation { EmitDwarfUnwind = EmitDwarfUnwindType::Default; EmitCompactUnwindNonCanonical = false; Crel = false; + Msa = 0; + NoMsa = 0; } static bool CreateFromArgs(AssemblerInvocation &Res, @@ -382,6 +388,8 @@ bool AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts, Opts.EmitCompactUnwindNonCanonical = Args.hasArg(OPT_femit_compact_unwind_non_canonical); Opts.Crel = Args.hasArg(OPT_crel); + Opts.Msa = Args.hasArg(OPT_mmsa); + Opts.NoMsa = Args.hasArg(OPT_mno_msa); Opts.AsSecureLogFile = Args.getLastArgValue(OPT_as_secure_log_file); @@ -444,6 +452,8 @@ static bool ExecuteAssemblerImpl(AssemblerInvocation &Opts, MCOptions.X86Sse2Avx = Opts.SSE2AVX; MCOptions.CompressDebugSections = Opts.CompressDebugSections; MCOptions.AsSecureLogFile = Opts.AsSecureLogFile; + MCOptions.MCMsa = Opts.Msa; + MCOptions.MCNoMsa = Opts.NoMsa; std::unique_ptr<MCAsmInfo> MAI( TheTarget->createMCAsmInfo(*MRI, Opts.Triple, MCOptions)); diff --git a/llvm/include/llvm/MC/MCTargetOptions.h b/llvm/include/llvm/MC/MCTargetOptions.h index 899299fd15246..fddd9dff8da3a 100644 --- a/llvm/include/llvm/MC/MCTargetOptions.h +++ b/llvm/include/llvm/MC/MCTargetOptions.h @@ -107,6 +107,9 @@ class MCTargetOptions { // Whether or not to use full register names on PowerPC. bool PPCUseFullRegisterNames : 1; + bool MCMsa : 1; + bool MCNoMsa : 1; + MCTargetOptions(); /// getABIName - If this returns a non-empty string this represents the `````````` </details> https://github.com/llvm/llvm-project/pull/99615 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits