summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Fitzgerald <fitzgen@gmail.com>2017-10-13 14:16:32 -0700
committerNick Fitzgerald <fitzgen@gmail.com>2017-10-23 09:43:47 -0700
commit500593b4ee8093d7806578a38fa60a9fb7c1440d (patch)
treec0e7ab69cb63497f087d432a8adc74ac835e76ee /src
parentd3e39dc6244777412b103ebf963005cd0043cfb4 (diff)
Add `trace!` logging for the `HasVtableAnalysis`
Diffstat (limited to 'src')
-rw-r--r--src/ir/analysis/has_vtable.rs5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/ir/analysis/has_vtable.rs b/src/ir/analysis/has_vtable.rs
index 41541a99..014d38b5 100644
--- a/src/ir/analysis/has_vtable.rs
+++ b/src/ir/analysis/has_vtable.rs
@@ -163,6 +163,7 @@ impl<'ctx> MonotoneFramework for HasVtableAnalysis<'ctx> {
}
fn constrain(&mut self, id: ItemId) -> ConstrainResult {
+ trace!("constrain {:?}", id);
let item = self.ctx.resolve_item(id);
let ty = match item.as_type() {
@@ -176,17 +177,21 @@ impl<'ctx> MonotoneFramework for HasVtableAnalysis<'ctx> {
TypeKind::Alias(t) |
TypeKind::ResolvedTypeRef(t) |
TypeKind::Reference(t) => {
+ trace!(" aliases and references forward to their inner type");
self.forward(t, id)
}
TypeKind::Comp(ref info) => {
+ trace!(" comp considers its own methods and bases");
let mut result = HasVtableResult::No;
if info.has_own_virtual_method() {
+ trace!(" comp has its own virtual method");
result |= HasVtableResult::SelfHasVtable;
}
let bases_has_vtable = info.base_members().iter().any(|base| {
+ trace!(" comp has a base with a vtable: {:?}", base);
self.have_vtable.contains_key(&base.ty.into())
});
if bases_has_vtable {