This is an archive of the discontinued LLVM Phabricator instance.

[analyzer] [WIP] Added new member to cache unsat cores, between equivalent bug reports
Needs RevisionPublic

Authored by mikhail.ramalho on Jul 23 2018, 7:30 AM.

Details

Summary

This patch implements an unsat core caching mechanism, which holds a vector of assumptions shared between equivalent bug reports.

I removed two static functions areConstraintsUnfeasible and addNewConstraints because they were quite small and moved their code to FalsePositiveRefutationBRVisitor::finalizeVisitor and FalsePositiveRefutationBRVisitor::VisitNode, respectively; keeping them around would mean adding a new parameter to areConstraintsUnfeasible, to pass the vector of assumptions, which didn't seem worth it.

It's a work-in-progress, because all the unsat cores are currently empty (at least with Z3 4.6).

Diff Detail

Event Timeline

george.karpenkov requested changes to this revision.Jul 23 2018, 10:44 AM

Let's hold on with this until we can get UNSAT cores working.
Maybe it's easier to just invoke the visitor on the entire equivalence class at once.

This revision now requires changes to proceed.Jul 23 2018, 10:44 AM