diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-07-01 13:24:05 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-07-01 13:24:05 +0000 | 
| commit | cf1b401909b5e54edfd80656b1a18eaa31f9f6f1 (patch) | |
| tree | edb0ffff2a43d84ba9b4c862b394cfeeebb36ddc /lib/Frontend/CompilerInvocation.cpp | |
| parent | ef915aab0ac566c55bfb0d7a9f6635bb5d94d4af (diff) | |
Notes
Diffstat (limited to 'lib/Frontend/CompilerInvocation.cpp')
| -rw-r--r-- | lib/Frontend/CompilerInvocation.cpp | 29 | 
1 files changed, 22 insertions, 7 deletions
| diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index 6254b0013bab1..00f6b9b46f03f 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -476,6 +476,10 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,        OPT_fexperimental_new_pass_manager, OPT_fno_experimental_new_pass_manager,        /* Default */ false); +  Opts.DebugPassManager = +      Args.hasFlag(OPT_fdebug_pass_manager, OPT_fno_debug_pass_manager, +                   /* Default */ false); +    if (Arg *A = Args.getLastArg(OPT_fveclib)) {      StringRef Name = A->getValue();      if (Name == "Accelerate") @@ -668,7 +672,6 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,    Opts.MSVolatile = Args.hasArg(OPT_fms_volatile); -  Opts.VectorizeBB = Args.hasArg(OPT_vectorize_slp_aggressive);    Opts.VectorizeLoop = Args.hasArg(OPT_vectorize_loops);    Opts.VectorizeSLP = Args.hasArg(OPT_vectorize_slp); @@ -906,12 +909,18 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,    Opts.DiagnosticsWithHotness =        Args.hasArg(options::OPT_fdiagnostics_show_hotness);    bool UsingSampleProfile = !Opts.SampleProfileFile.empty(); +  bool UsingProfile = UsingSampleProfile || +      (Opts.getProfileUse() != CodeGenOptions::ProfileNone); -  if (Opts.DiagnosticsWithHotness && -      Opts.getProfileUse() == CodeGenOptions::ProfileNone && -      !UsingSampleProfile) { -    Diags.Report(diag::warn_drv_fdiagnostics_show_hotness_requires_pgo); -  } +  if (Opts.DiagnosticsWithHotness && !UsingProfile) +    Diags.Report(diag::warn_drv_diagnostics_hotness_requires_pgo) +        << "-fdiagnostics-show-hotness"; + +  Opts.DiagnosticsHotnessThreshold = getLastArgUInt64Value( +      Args, options::OPT_fdiagnostics_hotness_threshold_EQ, 0); +  if (Opts.DiagnosticsHotnessThreshold > 0 && !UsingProfile) +    Diags.Report(diag::warn_drv_diagnostics_hotness_requires_pgo) +        << "-fdiagnostics-hotness-threshold=";    // If the user requested to use a sample profile for PGO, then the    // backend will need to track source location information so the profile @@ -2106,6 +2115,8 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,    Opts.AlignedAllocation =        Args.hasFlag(OPT_faligned_allocation, OPT_fno_aligned_allocation,                     Opts.AlignedAllocation); +  Opts.AlignedAllocationUnavailable = +      Opts.AlignedAllocation && Args.hasArg(OPT_aligned_alloc_unavailable);    Opts.NewAlignOverride =        getLastArgIntValue(Args, OPT_fnew_alignment_EQ, 0, Diags);    if (Opts.NewAlignOverride && !llvm::isPowerOf2_32(Opts.NewAlignOverride)) { @@ -2557,7 +2568,7 @@ static void ParseTargetArgs(TargetOptions &Opts, ArgList &Args,        Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args)                                                  << Value;      else -      Opts.EABIVersion = Value; +      Opts.EABIVersion = EABIVersion;    }    Opts.CPU = Args.getLastArgValue(OPT_target_cpu);    Opts.FPMath = Args.getLastArgValue(OPT_mfpmath); @@ -2644,6 +2655,10 @@ bool CompilerInvocation::CreateFromArgs(CompilerInvocation &Res,        Res.getTargetOpts().HostTriple = Res.getFrontendOpts().AuxTriple;    } +  // Set the triple of the host for OpenMP device compile. +  if (LangOpts.OpenMPIsDevice) +    Res.getTargetOpts().HostTriple = Res.getFrontendOpts().AuxTriple; +    // FIXME: Override value name discarding when asan or msan is used because the    // backend passes depend on the name of the alloca in order to print out    // names. | 
