aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorFYK <fanyikang@bosc.ac.cn>2025-05-30 22:13:53 +0800
committerGitHub <noreply@github.com>2025-05-30 08:13:53 -0600
commitd27a210a77af63568db9f829702b4b2c98473a46 (patch)
tree1a0eaad35f43f0f779590abe2c9508ac466211b3 /clang/lib/Frontend/CompilerInvocation.cpp
parent4d650ef4b3d7a0f21f8681e73586d0319fc3953b (diff)
downloadllvm-d27a210a77af63568db9f829702b4b2c98473a46.zip
llvm-d27a210a77af63568db9f829702b4b2c98473a46.tar.gz
llvm-d27a210a77af63568db9f829702b4b2c98473a46.tar.bz2
Add IR Profile-Guided Optimization (IR PGO) support to the Flang compiler (#136098)
This patch implements IR-based Profile-Guided Optimization support in Flang through the following flags: - `-fprofile-generate` for instrumentation-based profile generation - `-fprofile-use=<dir>/file` for profile-guided optimization Resolves #74216 (implements IR PGO support phase) **Key changes:** - Frontend flag handling aligned with Clang/GCC semantics - Instrumentation hooks into LLVM PGO infrastructure - LIT tests verifying: - Instrumentation metadata generation - Profile loading from specified path - Branch weight attribution (IR checks) **Tests:** - Added gcc-flag-compatibility.f90 test module verifying: - Flag parsing boundary conditions - IR-level profile annotation consistency - Profile input path normalization rules - SPEC2006 benchmark results will be shared in comments For details on LLVM's PGO framework, refer to [Clang PGO Documentation](https://clang.llvm.org/docs/UsersManual.html#profile-guided-optimization). This implementation was developed by [XSCC Compiler Team](https://github.com/orgs/OpenXiangShan/teams/xscc). --------- Co-authored-by: ict-ql <168183727+ict-ql@users.noreply.github.com> Co-authored-by: Tom Eccles <t@freedommail.info>
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 9c33910..11d0dc6 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -1499,11 +1499,11 @@ static void setPGOUseInstrumentor(CodeGenOptions &Opts,
// which is available (might be one or both).
if (PGOReader->isIRLevelProfile() || PGOReader->hasMemoryProfile()) {
if (PGOReader->hasCSIRLevelProfile())
- Opts.setProfileUse(CodeGenOptions::ProfileCSIRInstr);
+ Opts.setProfileUse(llvm::driver::ProfileInstrKind::ProfileCSIRInstr);
else
- Opts.setProfileUse(CodeGenOptions::ProfileIRInstr);
+ Opts.setProfileUse(llvm::driver::ProfileInstrKind::ProfileIRInstr);
} else
- Opts.setProfileUse(CodeGenOptions::ProfileClangInstr);
+ Opts.setProfileUse(llvm::driver::ProfileInstrKind::ProfileClangInstr);
}
void CompilerInvocation::setDefaultPointerAuthOptions(