Skip to content

Latest commit

 

History

History
20 lines (20 loc) · 1.14 KB

File metadata and controls

20 lines (20 loc) · 1.14 KB
category breaking
  • The C# control flow graph (CFG) implementation has been completely rewritten. The CFG now includes additional nodes to more accurately represent certain constructs. This also means that any existing code that implicitly relies on very specific details about the CFG may need to be updated. The CFG no longer uses splitting, which means that AST nodes now have a unique CFG node representation. Additionally, the following breaking changes have been made:
    • ControlFlow::Node has been renamed to ControlFlowNode.
    • ControlFlow::Nodes has been renamed to ControlFlowNodes.
    • BasicBlock.getCallable has been renamed to BasicBlock.getEnclosingCallable.
    • BasicBlocks.qll has been deleted.
    • ControlFlowNode.getAstNode has changed its meaning. The AST-to-CFG mapping remains one-to-many, but now for a different reason. It used to be because of splitting, but now it's because of additional "helper" CFG nodes. To get the (now canonical) CFG node for a given AST node, use ControlFlowNode.asExpr() or ControlFlowNode.asStmt() or ControlFlowElement.getControlFlowNode() instead.