-
Notifications
You must be signed in to change notification settings - Fork 15.3k
[Clang] Provide default value for -fprofile-sample-use, -fprofile-auto #112750
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Thank you for submitting a Pull Request (PR) to the LLVM Project! This PR will be automatically labeled and the relevant teams will be notified. If you wish to, you can add reviewers by using the "Reviewers" section on this page. If this is not working for you, it is probably because you do not have write permissions for the repository. In which case you can instead tag reviewers by name in a comment by using If you have received no comments on your PR for a week, you can request a review by "ping"ing the PR by adding a comment “Ping”. The common courtesy "ping" rate is once a week. Please remember that you are asking for valuable time from other developers. If you have further questions, they may be answered by the LLVM GitHub User Guide. You can also ask questions in a comment on this PR, on the LLVM Discord or on the forums. |
|
@llvm/pr-subscribers-clang-driver @llvm/pr-subscribers-clang Author: Mikołaj Piróg (mikolaj-pirog) ChangesAs in title. This matches the behavior of Full diff: https://github.com/llvm/llvm-project/pull/112750.diff 1 Files Affected:
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 3fc39296f44281..2da8b604ebff62 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -594,6 +594,8 @@ static void addPGOAndCoverageFlags(const ToolChain &TC, Compilation &C,
<< PGOGenerateArg->getSpelling() << ProfileGenerateArg->getSpelling();
auto *ProfileUseArg = getLastProfileUseArg(Args);
+ auto *ProfileSampleUseArg = Args.getLastArg(
+ options::OPT_fprofile_sample_use, options::OPT_fprofile_sample_use_EQ);
if (PGOGenerateArg && ProfileUseArg)
D.Diag(diag::err_drv_argument_not_allowed_with)
@@ -677,6 +679,25 @@ static void addPGOAndCoverageFlags(const ToolChain &TC, Compilation &C,
}
}
+ if (ProfileSampleUseArg) {
+ if ((ProfileSampleUseArg->getOption().matches(
+ options::OPT_fprofile_sample_use) ||
+ ProfileSampleUseArg->getOption().matches(
+ options::OPT_fprofile_sample_use_EQ))) {
+ SmallString<128> Path(ProfileSampleUseArg->getNumValues() == 0
+ ? ""
+ : ProfileSampleUseArg->getValue());
+ if (Path.empty() || llvm::sys::fs::is_directory(Path))
+ llvm::sys::path::append(Path, "default.profdata");
+
+ if (!llvm::sys::fs::exists(Path))
+ D.Diag(diag::err_drv_no_such_file) << Path;
+
+ CmdArgs.push_back(
+ Args.MakeArgString(Twine("-fprofile-sample-use=") + Path));
+ }
+ }
+
bool EmitCovNotes = Args.hasFlag(options::OPT_ftest_coverage,
options::OPT_fno_test_coverage, false) ||
Args.hasArg(options::OPT_coverage);
|
|
Pinging @MaskRay for review, I can't add reviewers in the dedicated gh section yet |
|
Actually I think we should drop the accepted and ignored For sample PGO, the profile file extension is usually |
I think this isn't the best solution, since it is inconsistent with the behavior of the |
|
Closing as #113528 fixed the issue |
As in title. This matches the behavior of
-fprofile-use, which when used without a path to the file, looks fordefault.profdatafile in the current/supplied dir. Fixes #112391