Side-Effecting Constraint Systems: A Swiss Army Knife for Program Analysis
edited by: Ranjit Jhala, Atsushi Igarashi
Side-effecting constraint systems were originally introduced for the analysis of multi-threaded code . In this paper, we show how this formalism provides a unified framework for realizing efficient interprocedural analyses where the amount of context-sensitivity can be tweaked and where the context-sensitive analyses of local properties can be combined with flow-insensitive analyses of global properties, e.g., about the heap. Side-effecting constraint systems thus form the ideal basis for building general-purpose infrastructures for static analysis. One such infrastructure is the analyzer generator Goblint, which we used to practically evaluate this approach on real-world examples.