https://github.com/minglotus-6 edited
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 edited
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 edited
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 resolved
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 resolved
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 resolved
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 resolved
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -92,6 +92,19 @@ INSTR_PROF_DATA(const uint16_t, Int16ArrayTy,
NumValueSites[IPVK_Last+1], \
/* INSTR_PROF_DATA end. */
+#ifndef INSTR_PROF_VTABLE_DATA
+#define INSTR_PROF_VTABLE_DATA(Type, LLVMType, Name, Initializer)
+#else
+#define INSTR_PROF_VTABLE_DATA_DEFINED
+#endif
https://github.com/minglotus-6 resolved
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 resolved
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 edited
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -19,20 +19,38 @@ namespace llvm {
// Visitor class that finds all indirect call.
struct PGOIndirectCallVisitor : public InstVisitor {
std::vector IndirectCalls;
+ std::vector VTableAddrs;
PGOIndirectCallVisitor() = default;
void visitCallBase(CallBase &Call) {
minglotus-6 wrote:
> > > The work sounds interesting. Can you provide a bit more context about it?
> > > Will it be used to improve ICP when it's sufficient to just compare the
> > > vtable address instead of the vfunc address?
> >
> >
> > yes -- it can not only eliminate vtable load, but als
https://github.com/minglotus-6 resolved
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 resolved
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -90,9 +90,33 @@ public:
}
};
+/// VirtualTableValueProfilingPlugin
+class VTableProfilingPlugin {
+ Function &F;
+
+public:
+ static constexpr InstrProfValueKind Kind = IPVK_VTableTarget;
+
+ VTableProfilingPlugin(Funct
@@ -309,9 +323,16 @@ lprofWriteDataImpl(ProfDataWriter *Writer, const
__llvm_profile_data *DataBegin,
return -1;
/* Write the binary id lengths and data. */
- if (__llvm_write_binary_ids(Writer) == -1)
+ int binary_id_size = __llvm_write_binary_ids(Writer);
+ if (bin
@@ -43,19 +45,15 @@ int main(int argc, const char *argv[]) {
uint64_t bufsize = __llvm_profile_get_size_for_buffer_internal(
__llvm_profile_begin_data(), __llvm_profile_end_data(),
__llvm_profile_begin_counters(), __llvm_profile_end_counters(),
- __llvm_profi
@@ -519,13 +591,20 @@ class InstrProfSymtab {
/// will be represented using the same StringRef value.
inline StringRef getFuncNameOrExternalSymbol(uint64_t FuncMD5Hash);
+ /// Just like getFuncName, except that it will return a non-empty StringRef
minglot
@@ -19,20 +19,38 @@ namespace llvm {
// Visitor class that finds all indirect call.
struct PGOIndirectCallVisitor : public InstVisitor {
std::vector IndirectCalls;
+ std::vector VTableAddrs;
PGOIndirectCallVisitor() = default;
void visitCallBase(CallBase &Call) {
https://github.com/minglotus-6 edited
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
minglotus-6 wrote:
> > Yes there are tradeoffs to doing this purely with whole program class
> > hierarchy analysis vs with profiled type info, and in fact they can be
> > complementary. For example, the profile info can indicate what order to do
> > the vtable comparisons (i.e. descending ord
@@ -177,13 +195,22 @@ VALUE_PROF_FUNC_PARAM(uint32_t, CounterIndex,
Type::getInt32Ty(Ctx))
VALUE_PROF_KIND(IPVK_IndirectCallTarget, 0, "indirect call target")
/* For memory intrinsic functions size profiling. */
VALUE_PROF_KIND(IPVK_MemOPSize, 1, "memory intrinsic functions si
@@ -18,11 +18,16 @@
* pointers to the live data in memory. This function is probably not what you
* want. Use __llvm_profile_get_size_for_buffer instead. Use this function if
* your program has a custom memory layout.
+ * NOTE: The change of function signature requires mo
minglotus-6 wrote:
> > > > Yes there are tradeoffs to doing this purely with whole program class
> > > > hierarchy analysis vs with profiled type info, and in fact they can be
> > > > complementary. For example, the profile info can indicate what order to
> > > > do the vtable comparisons (i.e
minglotus-6 wrote:
> we prioritize inlining the memcpy code for a specific range based on the
> hotness of that range in a particular inline context
@htyu Pretty much a drive-by question if it's convenient for you to share more,
how ranges are selected out of sampled values? For example, are r
https://github.com/minglotus-6 edited
https://github.com/llvm/llvm-project/pull/69141
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Author: Mingming Liu
Date: 2023-04-26T11:21:34-07:00
New Revision: 739f5578c497a64f2127d2ec7c41f8efa514d0b9
URL:
https://github.com/llvm/llvm-project/commit/739f5578c497a64f2127d2ec7c41f8efa514d0b9
DIFF:
https://github.com/llvm/llvm-project/commit/739f5578c497a64f2127d2ec7c41f8efa514d0b9.diff
Author: Mingming Liu
Date: 2023-04-27T09:39:08-07:00
New Revision: 4ab76b77cee0e27510d5d5cb3072ee7e92d96eec
URL:
https://github.com/llvm/llvm-project/commit/4ab76b77cee0e27510d5d5cb3072ee7e92d96eec
DIFF:
https://github.com/llvm/llvm-project/commit/4ab76b77cee0e27510d5d5cb3072ee7e92d96eec.diff
https://github.com/minglotus-6 converted_to_draft
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 ready_for_review
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
minglotus-6 wrote:
I have been putting this on hold to coordinate with some tooling change (which
likely become behind schedule).
At this point, both code reviews and testing the (pending) changes in would be
much more time efficient if this initial change could get in sooner.
Now with stack
https://github.com/minglotus-6 edited
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 edited
https://github.com/llvm/llvm-project/pull/66825
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
minglotus-6 wrote:
Going to merge as the failed tests are not related to this PR.
```
cat github-pull-requests_build_76910_linux-linux-x64.log | grep -B 2 -A 10
"Failed Tests "
--
Failed Tests (1):
BO
https://github.com/minglotus-6 closed
https://github.com/llvm/llvm-project/pull/81442
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
minglotus-6 wrote:
Fixing https://lab.llvm.org/buildbot/#/builders/95/builds/672 in
https://github.com/llvm/llvm-project/pull/97228
https://github.com/llvm/llvm-project/pull/81442
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.l
https://github.com/minglotus-6 updated
https://github.com/llvm/llvm-project/pull/107471
>From a18e042a0d03321d3ffca9ede92e976343a1b4c7 Mon Sep 17 00:00:00 2001
From: mingmingl
Date: Thu, 5 Sep 2024 14:36:28 -0700
Subject: [PATCH 1/2] [NFCI]Clean up synthetic count
---
clang/docs/tools/clang-f
https://github.com/minglotus-6 edited
https://github.com/llvm/llvm-project/pull/107471
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 edited
https://github.com/llvm/llvm-project/pull/107471
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 updated
https://github.com/llvm/llvm-project/pull/107471
>From a18e042a0d03321d3ffca9ede92e976343a1b4c7 Mon Sep 17 00:00:00 2001
From: mingmingl
Date: Thu, 5 Sep 2024 14:36:28 -0700
Subject: [PATCH 1/3] [NFCI]Clean up synthetic count
---
clang/docs/tools/clang-f
https://github.com/minglotus-6 edited
https://github.com/llvm/llvm-project/pull/107471
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 edited
https://github.com/llvm/llvm-project/pull/107471
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 ready_for_review
https://github.com/llvm/llvm-project/pull/107471
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 updated
https://github.com/llvm/llvm-project/pull/107471
>From a18e042a0d03321d3ffca9ede92e976343a1b4c7 Mon Sep 17 00:00:00 2001
From: mingmingl
Date: Thu, 5 Sep 2024 14:36:28 -0700
Subject: [PATCH 1/4] [NFCI]Clean up synthetic count
---
clang/docs/tools/clang-f
https://github.com/minglotus-6 edited
https://github.com/llvm/llvm-project/pull/107471
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 updated
https://github.com/llvm/llvm-project/pull/107471
>From a18e042a0d03321d3ffca9ede92e976343a1b4c7 Mon Sep 17 00:00:00 2001
From: mingmingl
Date: Thu, 5 Sep 2024 14:36:28 -0700
Subject: [PATCH 1/5] [NFCI]Clean up synthetic count
---
clang/docs/tools/clang-f
https://github.com/minglotus-6 updated
https://github.com/llvm/llvm-project/pull/107471
>From a18e042a0d03321d3ffca9ede92e976343a1b4c7 Mon Sep 17 00:00:00 2001
From: mingmingl
Date: Thu, 5 Sep 2024 14:36:28 -0700
Subject: [PATCH 1/6] [NFCI]Clean up synthetic count
---
clang/docs/tools/clang-f
https://github.com/minglotus-6 closed
https://github.com/llvm/llvm-project/pull/107471
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
minglotus-6 wrote:
The unused variable error is fixed in
https://github.com/llvm/llvm-project/commit/a7f152f59b1d64c6e1698fc6840c4911e11a
https://github.com/llvm/llvm-project/pull/107471
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http
minglotus-6 wrote:
Resolve review feedback, and 'backfilled' three affected tests in
`clang/test/CodeGen`. Now `ninja check-llvm check-clang check-compiler-rt`
passed locally.
https://github.com/llvm/llvm-project/pull/87597
___
cfe-commits mailing li
@@ -635,7 +635,8 @@ static void computeFunctionSummary(
HasIndirBranchToBlockAddress || HasIFuncCall;
GlobalValueSummary::GVFlags Flags(
F.getLinkage(), F.getVisibility(), NotEligibleForImport,
- /* Live = */ false, F.isDSOLocal(), F.c
@@ -432,6 +432,18 @@ class GlobalValueSummary {
/// Sububclass discriminator (for dyn_cast<> et al.)
enum SummaryKind : unsigned { AliasKind, FunctionKind, GlobalVarKind };
+ enum ImportKind : unsigned {
+// The global value definition corresponding to the summary sho
@@ -2072,6 +2072,23 @@ void LLParser::parseOptionalVisibility(unsigned &Res) {
Lex.Lex();
}
+static GlobalValueSummary::ImportKind
+parseOptionalImportType(lltok::Kind Kind) {
+ GlobalValueSummary::ImportKind Res;
+ switch (Kind) {
+ default:
+Res = GlobalValueSummary
@@ -16,13 +16,13 @@
^3 = gv: (guid: 2, summaries: (function: (module: ^1, flags: (linkage:
external, visibility: default, notEligibleToImport: 0, live: 0, dsoLocal: 0),
insts: 10, calls: ((callee: ^15, relbf: 256, tail: 1)
; Summaries with different linkage types.
-^4 =
@@ -564,6 +581,12 @@ class GlobalValueSummary {
bool canAutoHide() const { return Flags.CanAutoHide; }
+ bool shouldImportAsDec() const {
minglotus-6 wrote:
this makes sense, done.
https://github.com/llvm/llvm-project/pull/87597
_
https://github.com/minglotus-6 closed
https://github.com/llvm/llvm-project/pull/87597
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
minglotus-6 wrote:
> I think this might be breaking:
> FAIL: LLVM :: tools/gold/X86/thinlto.ll
Thanks for reporting and sorry for this. I'll send out a fix soon.
https://github.com/llvm/llvm-project/pull/87597
___
cfe-commits mailing list
cfe-commits@
minglotus-6 wrote:
> I think this might be breaking: FAIL: LLVM :: tools/gold/X86/thinlto.ll
fixed in
https://github.com/llvm/llvm-project/commit/20ed5b1f45871612570d3bd447121ac43e083c6a
https://github.com/llvm/llvm-project/pull/87597
___
cfe-commits
@@ -103,30 +110,222 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// This option is meant to be used by LLVM regression test and test the
+// transformation that compares vt
@@ -103,30 +110,220 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// This option is meant to be used by LLVM regression test and test the
+// transformation that compares vt
@@ -276,35 +585,151 @@ CallBase &llvm::pgo::promoteIndirectCall(CallBase &CB,
Function *DirectCallee,
// Promote indirect-call to conditional direct-call for one callsite.
bool IndirectCallPromoter::tryToPromoteWithFuncCmp(
-CallBase &CB, const std::vector &Candidates,
-
@@ -103,30 +110,220 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// This option is meant to be used by LLVM regression test and test the
+// transformation that compares vt
@@ -103,30 +110,220 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// This option is meant to be used by LLVM regression test and test the
+// transformation that compares vt
@@ -341,6 +879,17 @@ static bool promoteIndirectCalls(Module &M,
ProfileSummaryInfo *PSI, bool InLTO,
return false;
}
bool Changed = false;
+ VirtualCallSiteTypeInfoMap VirtualCSInfo;
+
+ computeVirtualCallSiteTypeInfoMap(M, MAM, VirtualCSInfo);
+
+ // This map reco
@@ -276,35 +585,151 @@ CallBase &llvm::pgo::promoteIndirectCall(CallBase &CB,
Function *DirectCallee,
// Promote indirect-call to conditional direct-call for one callsite.
bool IndirectCallPromoter::tryToPromoteWithFuncCmp(
-CallBase &CB, const std::vector &Candidates,
-
@@ -103,30 +110,222 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// This option is meant to be used by LLVM regression test and test the
+// transformation that compares vt
@@ -103,30 +110,220 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// This option is meant to be used by LLVM regression test and test the
+// transformation that compares vt
@@ -140,14 +337,51 @@ class IndirectCallPromoter {
// indirect callee with functions. Returns true if there are IR
// transformations and false otherwise.
bool tryToPromoteWithFuncCmp(
- CallBase &CB, const std::vector &Candidates,
- uint64_t TotalCount, ArrayRe
@@ -103,30 +110,220 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// This option is meant to be used by LLVM regression test and test the
+// transformation that compares vt
@@ -321,14 +746,127 @@ bool
IndirectCallPromoter::processFunction(ProfileSummaryInfo *PSI) {
if (!NumCandidates ||
(PSI && PSI->hasProfileSummary() && !PSI->isHotCount(TotalCount)))
continue;
+
auto PromotionCandidates = getPromotionCandidatesForCallSite
@@ -240,27 +474,102 @@ IndirectCallPromoter::getPromotionCandidatesForCallSite(
Ret.push_back(PromotionCandidate(TargetFunction, Count));
TotalCount -= Count;
}
+
return Ret;
}
+Constant *IndirectCallPromoter::getOrCreateVTableAddressPointVar(
+GlobalVariabl
@@ -103,30 +110,220 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// This option is meant to be used by LLVM regression test and test the
+// transformation that compares vt
@@ -316,6 +316,15 @@ void salvageDebugInfoForDbgValues(Instruction &I,
ArrayRef Insns,
ArrayRef DPInsns);
+void tryToSinkInstructionDbgValues(
minglotus-6 wrote:
Debug intrinsics are not hand
@@ -2538,6 +2538,190 @@ Value *getSalvageOpsForIcmpOp(ICmpInst *Icmp, uint64_t
CurrentLocOps,
return Icmp->getOperand(0);
}
+void llvm::tryToSinkInstructionDbgValues(
minglotus-6 wrote:
The `gep` and `load` sequence doesn't have debug values (so far) so it
https://github.com/minglotus-6 edited
https://github.com/llvm/llvm-project/pull/81442
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
https://github.com/minglotus-6 commented:
PTAL, thanks!
https://github.com/llvm/llvm-project/pull/81442
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -103,30 +110,220 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// This option is meant to be used by LLVM regression test and test the
+// transformation that compares vt
@@ -276,35 +626,154 @@ CallBase &llvm::pgo::promoteIndirectCall(CallBase &CB,
Function *DirectCallee,
// Promote indirect-call to conditional direct-call for one callsite.
bool IndirectCallPromoter::tryToPromoteWithFuncCmp(
-CallBase &CB, const std::vector &Candidates,
-
@@ -321,14 +790,114 @@ bool
IndirectCallPromoter::processFunction(ProfileSummaryInfo *PSI) {
if (!NumCandidates ||
(PSI && PSI->hasProfileSummary() && !PSI->isHotCount(TotalCount)))
continue;
+
auto PromotionCandidates = getPromotionCandidatesForCallSite
@@ -276,35 +626,154 @@ CallBase &llvm::pgo::promoteIndirectCall(CallBase &CB,
Function *DirectCallee,
// Promote indirect-call to conditional direct-call for one callsite.
bool IndirectCallPromoter::tryToPromoteWithFuncCmp(
-CallBase &CB, const std::vector &Candidates,
-
@@ -276,35 +626,154 @@ CallBase &llvm::pgo::promoteIndirectCall(CallBase &CB,
Function *DirectCallee,
// Promote indirect-call to conditional direct-call for one callsite.
bool IndirectCallPromoter::tryToPromoteWithFuncCmp(
-CallBase &CB, const std::vector &Candidates,
-
@@ -103,27 +114,226 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// Indirect call promotion pass will fall back to function-based comparison if
+// vtable-count / function-
@@ -1967,11 +1969,23 @@ void llvm::updateProfileCallee(
uint64_t CloneEntryCount = PriorEntryCount - NewEntryCount;
for (auto Entry : *VMap) {
if (isa(Entry.first))
-if (auto *CI = dyn_cast_or_null(Entry.second))
+if (auto *CI = dyn_cast_or_null(En
@@ -321,14 +746,127 @@ bool
IndirectCallPromoter::processFunction(ProfileSummaryInfo *PSI) {
if (!NumCandidates ||
(PSI && PSI->hasProfileSummary() && !PSI->isHotCount(TotalCount)))
continue;
+
auto PromotionCandidates = getPromotionCandidatesForCallSite
@@ -321,14 +790,114 @@ bool
IndirectCallPromoter::processFunction(ProfileSummaryInfo *PSI) {
if (!NumCandidates ||
(PSI && PSI->hasProfileSummary() && !PSI->isHotCount(TotalCount)))
continue;
+
auto PromotionCandidates = getPromotionCandidatesForCallSite
@@ -1967,11 +1969,23 @@ void llvm::updateProfileCallee(
uint64_t CloneEntryCount = PriorEntryCount - NewEntryCount;
for (auto Entry : *VMap) {
if (isa(Entry.first))
-if (auto *CI = dyn_cast_or_null(Entry.second))
+if (auto *CI = dyn_cast_or_null(En
@@ -1393,16 +1398,27 @@ MDNode *getPGOFuncNameMetadata(const Function &F) {
return F.getMetadata(getPGOFuncNameMetadataName());
}
-void createPGOFuncNameMetadata(Function &F, StringRef PGOFuncName) {
- // Only for internal linkage functions.
- if (PGOFuncName == F.getName(
@@ -321,14 +790,114 @@ bool
IndirectCallPromoter::processFunction(ProfileSummaryInfo *PSI) {
if (!NumCandidates ||
(PSI && PSI->hasProfileSummary() && !PSI->isHotCount(TotalCount)))
continue;
+
auto PromotionCandidates = getPromotionCandidatesForCallSite
@@ -103,27 +114,226 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// Indirect call promotion pass will fall back to function-based comparison if
+// vtable-count / function-
https://github.com/minglotus-6 edited
https://github.com/llvm/llvm-project/pull/81442
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -1967,11 +1969,23 @@ void llvm::updateProfileCallee(
uint64_t CloneEntryCount = PriorEntryCount - NewEntryCount;
for (auto Entry : *VMap) {
if (isa(Entry.first))
-if (auto *CI = dyn_cast_or_null(Entry.second))
+if (auto *CI = dyn_cast_or_null(En
@@ -103,30 +110,222 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// This option is meant to be used by LLVM regression test and test the
+// transformation that compares vt
@@ -89,41 +93,50 @@
// ICTEXT: # NumValueSites:
// ICTEXT: 2
// ICTEXT: 2
-// ICTEXT:
{{.*}}instrprof-vtable-value-prof.cpp;_ZN12_GLOBAL__N_18Derived25func1Eii:750
-// ICTEXT: _ZN8Derived15func1Eii:250
+// ICTEXT:
{{.*}}instrprof-vtable-value-prof.cpp;_ZN12_GLOBAL__N_18Derive
@@ -89,41 +93,50 @@
// ICTEXT: # NumValueSites:
// ICTEXT: 2
// ICTEXT: 2
-// ICTEXT:
{{.*}}instrprof-vtable-value-prof.cpp;_ZN12_GLOBAL__N_18Derived25func1Eii:750
-// ICTEXT: _ZN8Derived15func1Eii:250
+// ICTEXT:
{{.*}}instrprof-vtable-value-prof.cpp;_ZN12_GLOBAL__N_18Derive
@@ -103,30 +110,222 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// This option is meant to be used by LLVM regression test and test the
+// transformation that compares vt
@@ -103,30 +110,222 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// This option is meant to be used by LLVM regression test and test the
+// transformation that compares vt
@@ -103,30 +110,222 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// This option is meant to be used by LLVM regression test and test the
+// transformation that compares vt
@@ -103,30 +110,222 @@ static cl::opt
ICPDUMPAFTER("icp-dumpafter", cl::init(false), cl::Hidden,
cl::desc("Dump IR after transformation happens"));
+// This option is meant to be used by LLVM regression test and test the
+// transformation that compares vt
@@ -1827,15 +1831,13 @@ Expected FunctionImporter::importFunctions(
if (Error Err = SrcModule->materializeMetadata())
return std::move(Err);
-auto &ImportGUIDs = FunctionsToImportPerModule->second;
-
// Find the globals to import
SetVector GlobalsToImpo
201 - 300 of 339 matches
Mail list logo