summaryrefslogtreecommitdiff
path: root/src/graph.ml
AgeCommit message (Collapse)Author
2020-02-21Move topological sorting code to graph.mlThomas Bauereiss
2019-05-20Speed up graph construction by always keeping graph in normalized formBrian Campbell
Only checks the leaves that were added in each add_edge/add_edges call. Slicing bits of the 8.5 model went (for me) from intractable to about one second.
2019-03-13C: Improve Jib IR, add SSA representationAlasdair Armstrong
Add a CL_void l-expression so we don't have redundant unit-typed variables everywhere, and add an optimization in Jib_optimize called optimize_unit which introduces these. Remove the basic control-flow graph in Jib_util and add a new mutable control-flow graph type in Jib_ssa which allows the IR to be converted into SSA form. The mutable graph allows for more efficient updates, and includes both back and forwards references making it much more convenient to traverse. Having an SSA representation should make some optimizations much simpler, and is also probably more natural for SMT generation where variables have to be defined once using declare-const anyway. Debug option -ddump_flow_graphs now outputs SSA'd graphs of the functions in a specification.
2019-03-06Add option to slice out printing and tracing functions when generating CAlasdair Armstrong
Make instruction dependency graph use graph.ml Expose incremental graph building functions for performance in graph.mli
2019-03-01WIP: Start working on being able to slice single instructions out of specsAlasdair Armstrong
2018-08-16Use Set rather than Hashtbl in graph.mlAlasdair Armstrong
Removes the need for the node type to have a valid Hash function
2018-08-13Add graph library graph.ml, and use to correctly sort type definitionsAlasdair