diff options
author | Brian Gesiak <modocache@gmail.com> | 2017-07-01 04:54:53 +0000 |
---|---|---|
committer | Brian Gesiak <modocache@gmail.com> | 2017-07-01 04:54:53 +0000 |
commit | 315a27e4b8ea54421d9c1de57fe1e2ce2852580f (patch) | |
tree | ff19f6b0829b9c7b5d9426150d6e042261b9cddc | |
parent | 65139b8e3f4c84793ebd60966a1c6f18cef29ca4 (diff) |
Revert "[Driver] Add -fdiagnostics-hotness-threshold"
Summary:
The commit caused a documentation breakage.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@306946 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | docs/UsersManual.rst | 40 | ||||
-rw-r--r-- | include/clang/Basic/DiagnosticDriverKinds.td | 4 | ||||
-rw-r--r-- | include/clang/Driver/Options.td | 3 | ||||
-rw-r--r-- | include/clang/Frontend/CodeGenOptions.def | 4 | ||||
-rw-r--r-- | lib/CodeGen/CodeGenAction.cpp | 3 | ||||
-rw-r--r-- | lib/Driver/ToolChains/Clang.cpp | 6 | ||||
-rw-r--r-- | lib/Frontend/CompilerInvocation.cpp | 18 | ||||
-rw-r--r-- | test/Frontend/Inputs/optimization-remark-with-hotness-sample.proftext | 2 | ||||
-rw-r--r-- | test/Frontend/optimization-remark-with-hotness.c | 20 |
9 files changed, 20 insertions, 80 deletions
diff --git a/docs/UsersManual.rst b/docs/UsersManual.rst index ae038b21f2..7362456202 100644 --- a/docs/UsersManual.rst +++ b/docs/UsersManual.rst @@ -322,27 +322,18 @@ output format of the diagnostics that it generates. by category, so it should be a high level category. We want dozens of these, not hundreds or thousands of them. -.. _opt_fsave-optimization-record: - -**-fsave-optimization-record** - Write optimization remarks to a YAML file. - - This option, which defaults to off, controls whether Clang writes - optimization reports to a YAML file. By recording diagnostics in a file, - using a structured YAML format, users can parse or sort the remarks in a - convenient way. - .. _opt_fdiagnostics-show-hotness: **-f[no-]diagnostics-show-hotness** Enable profile hotness information in diagnostic line. - This option controls whether Clang prints the profile hotness associated - with diagnostics in the presence of profile-guided optimization information. - This is currently supported with optimization remarks (see - :ref:`Options to Emit Optimization Reports <rpass>`). The hotness information - allows users to focus on the hot optimization remarks that are likely to be - more relevant for run-time performance. + This option, which defaults to off, controls whether Clang prints the + profile hotness associated with a diagnostics in the presence of + profile-guided optimization information. This is currently supported with + optimization remarks (see :ref:`Options to Emit Optimization Reports + <rpass>`). The hotness information allows users to focus on the hot + optimization remarks that are likely to be more relevant for run-time + performance. For example, in this output, the block containing the callsite of `foo` was executed 3000 times according to the profile data: @@ -353,23 +344,6 @@ output format of the diagnostics that it generates. sum += foo(x, x - 2); ^ - This option is implied when - :ref:`-fsave-optimization-record <opt_fsave-optimization-record>` is used. - Otherwise, it defaults to off. - -.. _opt_fdiagnostics-hotness-threshold - -**-fdiagnostics-hotness-threshold** - Prevent optimization remarks from being output if they do not have at least - this hotness value. - - This option, which defaults to zero, controls the minimum hotness an - optimization remark would need in order to be output by Clang. This is - currently supported with optimization remarks (see :ref:`Options to Emit - Optimization Reports <rpass>`) when profile hotness information in - diagnostics is enabled (see - :ref:`-fdiagnostics-show-hotness <opt_fdiagnostics-show-hotness>`). - .. _opt_fdiagnostics-fixit-info: **-f[no-]diagnostics-fixit-info** diff --git a/include/clang/Basic/DiagnosticDriverKinds.td b/include/clang/Basic/DiagnosticDriverKinds.td index 42e1e5edaf..1a731975b3 100644 --- a/include/clang/Basic/DiagnosticDriverKinds.td +++ b/include/clang/Basic/DiagnosticDriverKinds.td @@ -198,8 +198,8 @@ def warn_drv_unused_argument : Warning< def warn_drv_empty_joined_argument : Warning< "joined argument expects additional value: '%0'">, InGroup<UnusedCommandLineArgument>; -def warn_drv_diagnostics_hotness_requires_pgo : Warning< - "argument '%0' requires profile-guided optimization information">, +def warn_drv_fdiagnostics_show_hotness_requires_pgo : Warning< + "argument '-fdiagnostics-show-hotness' requires profile-guided optimization information">, InGroup<UnusedCommandLineArgument>; def warn_drv_clang_unsupported : Warning< "the clang compiler does not support '%0'">; diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index b65b984731..90791fbfd4 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -723,9 +723,6 @@ def fdiagnostics_print_source_range_info : Flag<["-"], "fdiagnostics-print-sourc HelpText<"Print source range spans in numeric form">; def fdiagnostics_show_hotness : Flag<["-"], "fdiagnostics-show-hotness">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Enable profile hotness information in diagnostic line">; -def fdiagnostics_hotness_threshold_EQ : Joined<["-"], "fdiagnostics-hotness-threshold=">, - Group<f_Group>, Flags<[CC1Option]>, MetaVarName<"<number>">, - HelpText<"Prevent optimization remarks from being output if they do not have at least this profile count">; def fdiagnostics_show_option : Flag<["-"], "fdiagnostics-show-option">, Group<f_Group>, Flags<[CC1Option]>, HelpText<"Print option name with mappable diagnostics">; def fdiagnostics_show_note_include_stack : Flag<["-"], "fdiagnostics-show-note-include-stack">, diff --git a/include/clang/Frontend/CodeGenOptions.def b/include/clang/Frontend/CodeGenOptions.def index 238bb231bd..6eac39c753 100644 --- a/include/clang/Frontend/CodeGenOptions.def +++ b/include/clang/Frontend/CodeGenOptions.def @@ -261,10 +261,6 @@ VALUE_CODEGENOPT(EmitCheckPathComponentsToStrip, 32, 0) /// Whether to report the hotness of the code region for optimization remarks. CODEGENOPT(DiagnosticsWithHotness, 1, 0) -/// The minimum hotness value a diagnostic needs in order to be included in -/// optimization diagnostics. -VALUE_CODEGENOPT(DiagnosticsHotnessThreshold, 32, 0) - /// Whether copy relocations support is available when building as PIE. CODEGENOPT(PIECopyRelocations, 1, 0) diff --git a/lib/CodeGen/CodeGenAction.cpp b/lib/CodeGen/CodeGenAction.cpp index 4f03de5514..ba033d9413 100644 --- a/lib/CodeGen/CodeGenAction.cpp +++ b/lib/CodeGen/CodeGenAction.cpp @@ -229,9 +229,6 @@ namespace clang { void *OldDiagnosticContext = Ctx.getDiagnosticContext(); Ctx.setDiagnosticHandler(DiagnosticHandler, this); Ctx.setDiagnosticsHotnessRequested(CodeGenOpts.DiagnosticsWithHotness); - if (CodeGenOpts.DiagnosticsHotnessThreshold != 0) - Ctx.setDiagnosticsHotnessThreshold( - CodeGenOpts.DiagnosticsHotnessThreshold); std::unique_ptr<llvm::tool_output_file> OptRecordFile; if (!CodeGenOpts.OptRecordFile.empty()) { diff --git a/lib/Driver/ToolChains/Clang.cpp b/lib/Driver/ToolChains/Clang.cpp index 3731aa83ef..342d628396 100644 --- a/lib/Driver/ToolChains/Clang.cpp +++ b/lib/Driver/ToolChains/Clang.cpp @@ -4043,12 +4043,6 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, options::OPT_fno_diagnostics_show_hotness, false)) CmdArgs.push_back("-fdiagnostics-show-hotness"); - if (const Arg *A = - Args.getLastArg(options::OPT_fdiagnostics_hotness_threshold_EQ)) { - std::string Opt = std::string("-fdiagnostics-hotness-threshold=") + A->getValue(); - CmdArgs.push_back(Args.MakeArgString(Opt)); - } - if (const Arg *A = Args.getLastArg(options::OPT_fdiagnostics_format_EQ)) { CmdArgs.push_back("-fdiagnostics-format"); CmdArgs.push_back(A->getValue()); diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index 5851595dab..b1b10ddf96 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -909,18 +909,12 @@ 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 && !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 (Opts.DiagnosticsWithHotness && + Opts.getProfileUse() == CodeGenOptions::ProfileNone && + !UsingSampleProfile) { + Diags.Report(diag::warn_drv_fdiagnostics_show_hotness_requires_pgo); + } // If the user requested to use a sample profile for PGO, then the // backend will need to track source location information so the profile diff --git a/test/Frontend/Inputs/optimization-remark-with-hotness-sample.proftext b/test/Frontend/Inputs/optimization-remark-with-hotness-sample.proftext index 730dc4a0d5..aeea583de4 100644 --- a/test/Frontend/Inputs/optimization-remark-with-hotness-sample.proftext +++ b/test/Frontend/Inputs/optimization-remark-with-hotness-sample.proftext @@ -1,7 +1,7 @@ foo:0:0 0: 0 bar:29:29 - 9: foo:0 + 6: foo:0 main:0:0 0: 0 bar:0 diff --git a/test/Frontend/optimization-remark-with-hotness.c b/test/Frontend/optimization-remark-with-hotness.c index 875fc75ae1..30ead64b8e 100644 --- a/test/Frontend/optimization-remark-with-hotness.c +++ b/test/Frontend/optimization-remark-with-hotness.c @@ -15,14 +15,12 @@ // RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \ // RUN: -fprofile-sample-use=%t-sample.profdata -Rpass=inline \ // RUN: -Rpass-analysis=inline -Rpass-missed=inline \ -// RUN: -fdiagnostics-show-hotness -fdiagnostics-hotness-threshold=10 \ -// RUN: -verify +// RUN: -fdiagnostics-show-hotness -verify // The clang version of the previous test. // RUN: %clang -target x86_64-apple-macosx10.9 %s -c -emit-llvm -o /dev/null \ // RUN: -fprofile-instr-use=%t.profdata -Rpass=inline \ // RUN: -Rpass-analysis=inline -Rpass-missed=inline \ -// RUN: -fdiagnostics-show-hotness -fdiagnostics-hotness-threshold=10 \ -// RUN: -Xclang -verify +// RUN: -fdiagnostics-show-hotness -Xclang -verify // RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \ // RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \ // RUN: -fprofile-instrument-use-path=%t.profdata -Rpass=inline \ @@ -30,18 +28,11 @@ // RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \ // RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \ // RUN: -fprofile-instrument-use-path=%t.profdata -Rpass=inline \ -// RUN: -Rpass-analysis=inline -Rno-pass-with-hotness 2>&1 | FileCheck \ +// RUN: -Rpass-analysis=inline -Rno-pass-with-hotness 2>&1 | FileCheck \ // RUN: -check-prefix=HOTNESS_OFF %s // RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \ // RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \ -// RUN: -fprofile-instrument-use-path=%t.profdata -Rpass=inline \ -// RUN: -Rpass-analysis=inline -fdiagnostics-show-hotness \ -// RUN: -fdiagnostics-hotness-threshold=100 2>&1 \ -// RUN: | FileCheck -allow-empty -check-prefix=THRESHOLD %s -// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name \ -// RUN: optimization-remark-with-hotness.c %s -emit-llvm-only \ -// RUN: -Rpass=inline -Rpass-analysis=inline \ -// RUN: -fdiagnostics-show-hotness -fdiagnostics-hotness-threshold=10 2>&1 \ +// RUN: -Rpass=inline -Rpass-analysis=inline -fdiagnostics-show-hotness 2>&1 \ // RUN: | FileCheck -check-prefix=NO_PGO %s int foo(int x, int y) __attribute__((always_inline)); @@ -52,10 +43,7 @@ int sum = 0; void bar(int x) { // HOTNESS_OFF: foo inlined into bar // HOTNESS_OFF-NOT: hotness: - // THRESHOLD-NOT: inlined - // THRESHOLD-NOT: hotness // NO_PGO: '-fdiagnostics-show-hotness' requires profile-guided optimization information - // NO_PGO: '-fdiagnostics-hotness-threshold=' requires profile-guided optimization information // expected-remark@+2 {{foo should always be inlined (cost=always) (hotness: 30)}} // expected-remark@+1 {{foo inlined into bar (hotness: 30)}} sum += foo(x, x - 2); |