diff options
author | Nick Fitzgerald <fitzgen@gmail.com> | 2017-10-13 14:16:32 -0700 |
---|---|---|
committer | Nick Fitzgerald <fitzgen@gmail.com> | 2017-10-23 09:43:47 -0700 |
commit | 500593b4ee8093d7806578a38fa60a9fb7c1440d (patch) | |
tree | c0e7ab69cb63497f087d432a8adc74ac835e76ee /src | |
parent | d3e39dc6244777412b103ebf963005cd0043cfb4 (diff) |
Add `trace!` logging for the `HasVtableAnalysis`
Diffstat (limited to 'src')
-rw-r--r-- | src/ir/analysis/has_vtable.rs | 5 |
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 { |