summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenPGO.cpp
diff options
context:
space:
mode:
authorBetul Buyukkurt <betulb@codeaurora.org>2016-03-31 18:41:34 +0000
committerBetul Buyukkurt <betulb@codeaurora.org>2016-03-31 18:41:34 +0000
commit3da993c4192c64334bf667d53b74378b369973b3 (patch)
tree4ad999ed7de6d26ab4d3d9b3b20ac83a0656fae5 /clang/lib/CodeGen/CodeGenPGO.cpp
parente1a2e90ffadd810ef6bd580e90b42a83958dfc11 (diff)
downloadbcm5719-llvm-3da993c4192c64334bf667d53b74378b369973b3.tar.gz
bcm5719-llvm-3da993c4192c64334bf667d53b74378b369973b3.zip
[PGO] Avoid instrumenting constants at value sites
Value profiling should not profile constants and/or constant expressions when they appear as callees in call instructions. Constant expressions form when a direct callee has bitcasts or inttoptr(ptrtint (callee)) nests surrounding it. Value profiling should avoid instrumenting such cases. Mostly NFC. llvm-svn: 265037
Diffstat (limited to 'clang/lib/CodeGen/CodeGenPGO.cpp')
-rw-r--r--clang/lib/CodeGen/CodeGenPGO.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenPGO.cpp b/clang/lib/CodeGen/CodeGenPGO.cpp
index e5993f51e4d..7e89492f1c6 100644
--- a/clang/lib/CodeGen/CodeGenPGO.cpp
+++ b/clang/lib/CodeGen/CodeGenPGO.cpp
@@ -755,6 +755,9 @@ void CodeGenPGO::valueProfile(CGBuilderTy &Builder, uint32_t ValueKind,
if (!ValuePtr || !ValueSite || !Builder.GetInsertBlock())
return;
+ if (isa<llvm::Constant>(ValuePtr))
+ return;
+
bool InstrumentValueSites = CGM.getCodeGenOpts().hasProfileClangInstr();
if (InstrumentValueSites && RegionCounterMap) {
auto BuilderInsertPoint = Builder.saveIP();
OpenPOWER on IntegriCloud