As part of the dataflow analysis framework, there is a SAT solver (API defined in Solver.h) which takes llvm::DenseSet<BoolValue*> Constraints as input and checks if the booleans are satisfiable.
This patch implements functionality to produce a readable string representation of the boolean constraints, the status of the SAT check and the satisfying truth assigment if found by the SAT solver.
Note that the booleans in an llvm::DenseSet is not fixed. Therefore, we introduce an overloaded debugString which takes a std::vector<BoolValue *> Constraints as input to guarantee order stability and enable testing against hardcoded expected string values.
Depends On D129547
In its current form, I think you could create the final strings in one step and sort those strings instead of the pairs. Or do we expect alignment to mess up the order in that case?