copilot-swe-agent[bot]
66eaeebd1e
Migrate Go type switches to shared CFG switch model (Option B)
2026-06-23 21:58:49 +00:00
copilot-swe-agent[bot]
587c4b344a
Update SSA expected files for new shared-CFG node locations
2026-06-23 20:02:42 +00:00
copilot-swe-agent[bot]
4eba3607cb
Fix switch-case sanitizer edge for shared CFG and accept CFG expected
2026-06-23 19:57:40 +00:00
copilot-swe-agent[bot]
d83455db64
Migrate Go expression switch CFG to shared library; handle fallthrough via fallsThrough
2026-06-23 18:58:42 +00:00
Owen Mansel-Chan
cae623d669
Test changes to be checked
2026-06-22 23:09:27 +01:00
Owen Mansel-Chan
326fa74b21
Update query for unreachable statements
2026-06-22 23:09:25 +01:00
Owen Mansel-Chan
138a1c3c99
Fix calls for defer statements
2026-06-22 23:09:23 +01:00
Owen Mansel-Chan
13bf978f64
Go CFG: run deferred calls at function exit in LIFO order
...
Model `defer`ed calls so the call runs at function exit rather than inline
at the `defer` statement, reproducing the previous control-flow semantics:
- Add a per-defer "defer-invoke" node for the deferred call.
- deferExitStep wires normal-exit predecessors (return nodes and body
fall-through) through the active deferred-call invocations in
last-in-first-out order, then on to the normal exit target (the
result-read epilogue for named results, or the normal exit node).
- The chain is reachability-gated using the defer-free successor relation
(succIgnoringDeferExit / isInOrderNode), so only deferred calls that were
actually registered on a path are run on that path.
- overridesCallableBodyExit / overridesCallableEndAbruptCompletion suppress
the default body-exit and return routing for functions containing
`defer`, so the epilogue is interposed instead.
2026-06-22 23:09:21 +01:00
Owen Mansel-Chan
f5eef7d3d7
Go CFG: anchor result-read epilogue on Normal Exit via new hooks
2026-06-22 23:09:17 +01:00
Owen Mansel-Chan
3cd6a279d0
Include implicit type switch var in CFG
2026-06-22 23:09:11 +01:00
Owen Mansel-Chan
0f6bccf208
accept test changes
2026-06-22 23:09:10 +01:00
Owen Mansel-Chan
7039942a66
Fix CFG for expressionless switch statements
2026-06-22 23:09:08 +01:00
Owen Mansel-Chan
2453482003
Accept changes
2026-06-22 23:09:06 +01:00
Owen Mansel-Chan
de96f6ceac
Fix ConditionGuardNode
2026-06-22 23:09:04 +01:00
Owen Mansel-Chan
c37f235031
Accept test output change names
2026-06-22 23:09:02 +01:00
Owen Mansel-Chan
8908dc4a6e
Restore ConditionGuardNode
2026-06-22 23:09:00 +01:00
Owen Mansel-Chan
53a6afa218
Fix treatment of ParenExpr
2026-06-22 23:08:58 +01:00
Owen Mansel-Chan
0dfa9d72b1
Add Go CFG consistency query
2026-06-22 23:08:56 +01:00
Owen Mansel-Chan
6997936a83
Go: update expected node names
2026-06-22 23:08:54 +01:00
Owen Mansel-Chan
8debf965ac
Use shared CFG getIfInit
2026-06-22 23:08:52 +01:00
Owen Mansel-Chan
8099b255af
Fix lit-init nodes
...
There was a loop in the definitions which meant nothing ever got made
2026-06-22 23:08:51 +01:00
Owen Mansel-Chan
68a4131523
Fix range loop CFG
2026-06-22 23:08:49 +01:00
Owen Mansel-Chan
b56342533e
update function-entry additional nodes
2026-06-22 23:08:47 +01:00
Owen Mansel-Chan
134cc48c75
Restore ExprNode for FuncLit
2026-06-22 23:08:45 +01:00
Owen Mansel-Chan
016c53ccbd
Accept change in test output
...
To determine that test9 can't return normally, you have to use the fact
that test5 can't return normally. This would make CFG construction
recursive, which would be bad for performance. Therefore we accept the
limitation that we cannot detect that test9 can't return normally, and
we change the test output.
2026-06-22 23:08:43 +01:00
Owen Mansel-Chan
9b63398874
Fix empty switch statements
2026-06-22 23:08:41 +01:00
Owen Mansel-Chan
0244d809d1
Control flow shouldn't enter another callable
2026-06-22 23:08:39 +01:00
Owen Mansel-Chan
d582d68afd
Fix CFG for return instructions
2026-06-22 23:08:37 +01:00
Owen Mansel-Chan
9b35117475
Produce CFG nodes for more reference expressions, like selector bases
2026-06-22 23:08:35 +01:00
Owen Mansel-Chan
642e567e48
Fix global value numbering calculation
2026-06-22 23:08:33 +01:00
Owen Mansel-Chan
8a62e874ca
Include receivers in parameter init
2026-06-22 23:08:31 +01:00
Owen Mansel-Chan
13d4eb6933
Fix CFG for range loop
2026-06-22 23:08:29 +01:00
Owen Mansel-Chan
22ca59d190
Fix CFG for select statements
2026-06-22 23:08:27 +01:00
Owen Mansel-Chan
32a6187434
Use shared CFG implementation of for loops
2026-06-22 23:08:26 +01:00
Owen Mansel-Chan
f9953630a7
Do not include comments in the CFG
2026-06-22 23:08:24 +01:00
Owen Mansel-Chan
0deb94ac2d
Fix edges to function exit with result variables
2026-06-22 23:08:22 +01:00
Owen Mansel-Chan
f8c2f2cbd9
Tweak getEnclosingCallable
2026-06-22 23:08:20 +01:00
Owen Mansel-Chan
984a880089
Model non-returning functions in CFG
2026-06-22 23:08:18 +01:00
Owen Mansel-Chan
1c62580835
Create cfg node for child of ParenExpr
2026-06-22 23:08:16 +01:00
Owen Mansel-Chan
99330a65a7
Add go/print-cfg
2026-06-22 23:08:14 +01:00
Owen Mansel-Chan
fc055a8699
Initial shared CFG library instantiation for Go
2026-06-22 23:08:12 +01:00
Owen Mansel-Chan
65513b8cd2
Incidental fix to CaseClause.getAnExpr()
2026-06-22 23:08:09 +01:00
Owen Mansel-Chan
07cf89568f
Test CFG for function epilogue (read-result nodes and calls to defered functions)
2026-06-20 22:04:45 +01:00
Owen Mansel-Chan
42ebe56023
Make all lines in logging tests reachable
2026-06-20 22:04:43 +01:00
Owen Mansel-Chan
f65d1e82cf
Merge pull request #21554 from github/copilot/make-go-use-ssa-library
...
Go: use shared SSA library (codeql.ssa.Ssa)
2026-06-19 13:40:37 +01:00
github-actions[bot]
65a3153066
Add changed framework coverage reports
2026-06-19 01:06:45 +00:00
Owen Mansel-Chan
fc06aa1a32
Update expected data flow consistency results
2026-06-18 14:54:19 +01:00
Owen Mansel-Chan
2d34b0be1b
Merge branch 'main' into copilot/make-go-use-ssa-library
2026-06-18 14:09:20 +01:00
Owen Mansel-Chan
8c07e95f05
Rename mayCapture to mayUpdateCapturedVariable
2026-06-18 12:41:25 +01:00
Owen Mansel-Chan
f04c8ccbc7
Use module already provided by BasicBlocks lib
2026-06-18 12:37:27 +01:00