Skip to content

Commit d302fa7

Browse files
committed
Add change note
1 parent 1cc30d2 commit d302fa7

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
category: breaking
3+
---
4+
* The Go control flow graph (CFG) implementation has been completely rewritten
5+
to use the shared CFG library. The CFG now includes additional nodes to more
6+
accurately represent certain constructs, including assignments, function
7+
parameters and results, range statements, and deferred calls. The CFG now
8+
only includes nodes that are reachable from the entry point. Basic blocks are
9+
also now constructed directly from the shared CFG. Existing code that relies
10+
on specific CFG nodes, edges, locations, textual representations, or basic
11+
block boundaries may need to be updated. Additionally, the following API
12+
changes have been made:
13+
- `BasicBlocks::Cfg` has been removed. `BasicBlock` now directly uses the
14+
basic-block implementation provided by the shared CFG library.
15+
- `ControlFlow::EntryNode` and `ControlFlow::ExitNode` have been added, and
16+
`ControlFlow::entryNode` and `ControlFlow::exitNode` now return these more
17+
specific types.
18+
- Several IR instruction classes have been removed or consolidated, including
19+
`ReadArgumentInstruction`, `InitResultInstruction`, `IncDecInstruction`,
20+
`EvalIncDecRhsInstruction`, `EvalImplicitOneInstruction`,
21+
`SelectInstruction`, and `SendInstruction`.
22+
- `EvalCompoundAssignRhsInstruction` and `EvalImplicitInitInstruction` now
23+
directly represent their associated writes.

0 commit comments

Comments
 (0)