Skip to content

Commit 570e0ad

Browse files
committed
PruneVTables: Add DEBUG logging of the pass decisions
1 parent cc358ba commit 570e0ad

File tree

1 file changed

+32
-4
lines changed

1 file changed

+32
-4
lines changed

lib/SILOptimizer/Transforms/PruneVTables.cpp

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,43 +29,71 @@ namespace {
2929
class PruneVTables : public SILModuleTransform {
3030
void runOnVTable(SILModule *M,
3131
SILVTable *vtable) {
32+
LLVM_DEBUG(llvm::dbgs() << "PruneVTables inspecting table:\n";
33+
vtable->print(llvm::dbgs()));
3234
for (auto &entry : vtable->getMutableEntries()) {
3335

3436
// We don't need to worry about entries that are overridden,
3537
// or have already been found to have no overrides.
36-
if (entry.isNonOverridden())
38+
if (entry.isNonOverridden()) {
39+
LLVM_DEBUG(llvm::dbgs() << "-- entry for ";
40+
entry.getMethod().print(llvm::dbgs());
41+
llvm::dbgs() << " is already nonoverridden\n");
3742
continue;
43+
}
3844

3945
switch (entry.getKind()) {
4046
case SILVTable::Entry::Normal:
4147
case SILVTable::Entry::Inherited:
4248
break;
4349

4450
case SILVTable::Entry::Override:
51+
LLVM_DEBUG(llvm::dbgs() << "-- entry for ";
52+
entry.getMethod().print(llvm::dbgs());
53+
llvm::dbgs() << " is an override\n");
4554
continue;
4655
}
4756

4857
// The destructor entry must remain.
4958
if (entry.getMethod().kind == SILDeclRef::Kind::Deallocator) {
59+
LLVM_DEBUG(llvm::dbgs() << "-- entry for ";
60+
entry.getMethod().print(llvm::dbgs());
61+
llvm::dbgs() << " is a destructor\n");
5062
continue;
5163
}
5264

5365
auto methodDecl = entry.getMethod().getAbstractFunctionDecl();
54-
if (!methodDecl)
66+
if (!methodDecl) {
67+
LLVM_DEBUG(llvm::dbgs() << "-- entry for ";
68+
entry.getMethod().print(llvm::dbgs());
69+
llvm::dbgs() << " is not a function decl\n");
5570
continue;
71+
}
5672

5773
// Is the method declared final?
5874
if (!methodDecl->isFinal()) {
5975
// Are callees of this entry statically knowable?
60-
if (!calleesAreStaticallyKnowable(*M, entry.getMethod()))
76+
if (!calleesAreStaticallyKnowable(*M, entry.getMethod())) {
77+
LLVM_DEBUG(llvm::dbgs() << "-- entry for ";
78+
entry.getMethod().print(llvm::dbgs());
79+
llvm::dbgs() << " does not have statically-knowable callees\n");
6180
continue;
81+
}
6282

6383
// Does the method have any overrides in this module?
64-
if (methodDecl->isOverridden())
84+
if (methodDecl->isOverridden()) {
85+
LLVM_DEBUG(llvm::dbgs() << "-- entry for ";
86+
entry.getMethod().print(llvm::dbgs());
87+
llvm::dbgs() << " has overrides\n");
6588
continue;
89+
}
6690
}
91+
LLVM_DEBUG(llvm::dbgs() << "++ entry for ";
92+
entry.getMethod().print(llvm::dbgs());
93+
llvm::dbgs() << " can be marked non-overridden!\n");
6794
++NumNonoverriddenVTableEntries;
6895
entry.setNonOverridden(true);
96+
vtable->updateVTableCache(entry);
6997
}
7098
}
7199

0 commit comments

Comments
 (0)