зеркало из https://github.com/microsoft/clang-1.git
Make -vectorize-... proper cc1 flags instead of abusing -backend-option. Fixes
usage of clang as a library. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184812 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
9db7f57c1e
Коммит
fdf137b907
|
@ -204,6 +204,12 @@ def mconstructor_aliases : Flag<["-"], "mconstructor-aliases">,
|
|||
HelpText<"Emit complete constructors and destructors as aliases when possible">;
|
||||
def mlink_bitcode_file : Separate<["-"], "mlink-bitcode-file">,
|
||||
HelpText<"Link the given bitcode file before performing optimizations.">;
|
||||
def vectorize_loops : Flag<["-"], "vectorize-loops">,
|
||||
HelpText<"Run the Loop vectorization passes">;
|
||||
def vectorize_slp : Flag<["-"], "vectorize-slp">,
|
||||
HelpText<"Run the SLP vectorization passes">;
|
||||
def vectorize_slp_aggressive : Flag<["-"], "vectorize-slp-aggressive">,
|
||||
HelpText<"Run the BB vectorization passes">;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Dependency Output Options
|
||||
|
|
|
@ -109,6 +109,9 @@ CODEGENOPT(UnitAtATime , 1, 1) ///< Unused. For mirroring GCC optimization
|
|||
CODEGENOPT(UnrollLoops , 1, 0) ///< Control whether loops are unrolled.
|
||||
CODEGENOPT(UnsafeFPMath , 1, 0) ///< Allow unsafe floating point optzns.
|
||||
CODEGENOPT(UnwindTables , 1, 0) ///< Emit unwind tables.
|
||||
CODEGENOPT(VectorizeBB , 1, 0) ///< Run basic block vectorizer.
|
||||
CODEGENOPT(VectorizeLoop , 1, 0) ///< Run loop vectorizer.
|
||||
CODEGENOPT(VectorizeSLP , 1, 0) ///< Run SLP vectorizer.
|
||||
|
||||
/// Attempt to use register sized accesses to bit-fields in structures, when
|
||||
/// possible.
|
||||
|
|
|
@ -220,6 +220,9 @@ void EmitAssemblyHelper::CreatePasses(TargetMachine *TM) {
|
|||
PassManagerBuilderWrapper PMBuilder(CodeGenOpts, LangOpts);
|
||||
PMBuilder.OptLevel = OptLevel;
|
||||
PMBuilder.SizeLevel = CodeGenOpts.OptimizeSize;
|
||||
PMBuilder.BBVectorize = CodeGenOpts.VectorizeBB;
|
||||
PMBuilder.SLPVectorize = CodeGenOpts.VectorizeSLP;
|
||||
PMBuilder.LoopVectorize = CodeGenOpts.VectorizeLoop;
|
||||
|
||||
PMBuilder.DisableUnitAtATime = !CodeGenOpts.UnitAtATime;
|
||||
PMBuilder.DisableUnrollLoops = !CodeGenOpts.UnrollLoops;
|
||||
|
|
|
@ -2186,7 +2186,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
CmdArgs.push_back(A->getValue());
|
||||
}
|
||||
|
||||
if (Arg *A = Args.getLastArg(options::OPT_fpcc_struct_return, options::OPT_freg_struct_return)) {
|
||||
if (Arg *A = Args.getLastArg(options::OPT_fpcc_struct_return,
|
||||
options::OPT_freg_struct_return)) {
|
||||
if (getToolChain().getTriple().getArch() != llvm::Triple::x86) {
|
||||
D.Diag(diag::err_drv_unsupported_opt_for_target)
|
||||
<< A->getSpelling() << getToolChain().getTriple().str();
|
||||
|
@ -3400,24 +3401,18 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
|
||||
// -fvectorize is default.
|
||||
if (Args.hasFlag(options::OPT_fvectorize, VectorizeAliasOption,
|
||||
options::OPT_fno_vectorize, true)) {
|
||||
CmdArgs.push_back("-backend-option");
|
||||
options::OPT_fno_vectorize, true))
|
||||
CmdArgs.push_back("-vectorize-loops");
|
||||
}
|
||||
|
||||
// -fno-slp-vectorize is default.
|
||||
if (Args.hasFlag(options::OPT_fslp_vectorize,
|
||||
options::OPT_fno_slp_vectorize, false)) {
|
||||
CmdArgs.push_back("-backend-option");
|
||||
options::OPT_fno_slp_vectorize, false))
|
||||
CmdArgs.push_back("-vectorize-slp");
|
||||
}
|
||||
|
||||
// -fno-slp-vectorize-aggressive is default.
|
||||
if (Args.hasFlag(options::OPT_fslp_vectorize_aggressive,
|
||||
options::OPT_fno_slp_vectorize_aggressive, false)) {
|
||||
CmdArgs.push_back("-backend-option");
|
||||
options::OPT_fno_slp_vectorize_aggressive, false))
|
||||
CmdArgs.push_back("-vectorize-slp-aggressive");
|
||||
}
|
||||
|
||||
if (Arg *A = Args.getLastArg(options::OPT_fshow_overloads_EQ))
|
||||
A->render(Args, CmdArgs);
|
||||
|
|
|
@ -399,6 +399,10 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
|
|||
Opts.FunctionSections = Args.hasArg(OPT_ffunction_sections);
|
||||
Opts.DataSections = Args.hasArg(OPT_fdata_sections);
|
||||
|
||||
Opts.VectorizeBB = Args.hasArg(OPT_vectorize_slp_aggressive);
|
||||
Opts.VectorizeLoop = Args.hasArg(OPT_vectorize_loops);
|
||||
Opts.VectorizeSLP = Args.hasArg(OPT_vectorize_slp);
|
||||
|
||||
Opts.MainFileName = Args.getLastArgValue(OPT_main_file_name);
|
||||
Opts.VerifyModule = !Args.hasArg(OPT_disable_llvm_verifier);
|
||||
Opts.SanitizeRecover = !Args.hasArg(OPT_fno_sanitize_recover);
|
||||
|
|
Загрузка…
Ссылка в новой задаче