[PATCH] [GCC] AutoFDO: Walk predecessor edges for PHI arguments
Kugan Vivekanandarajah <[email protected]> Tue, 4 Aug 2026 10:39:21 +1000
| Newsgroups | gmane.comp.gcc.patches |
|---|---|
| Message-ID | <[email protected]> |
PHI arguments are indexed by incoming edges. function_instance::match walked successor edges and could fail gimple_phi_arg_def_from_edge's destination assertion during afdo_offline. gcc/ChangeLog: * auto-profile.cc (function_instance::match): Walk predecessor edges for PHI arguments. Regression tested on aarch64-linux-gnu with no new regressions Signed-off-by: Kugan Vivekanandarajah <[email protected]> --- gcc/auto-profile.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/auto-profile.cc b/gcc/auto-profile.cc index f4562d7f2f98..60f6b1ba480b 100644 --- a/gcc/auto-profile.cc +++ b/gcc/auto-profile.cc @@ -1764,7 +1764,8 @@ function_instance::match (cgraph_node *node, gcc_assert (!info); dump_stmt (phi, info, NULL, stack); counts.add (info); - for (edge e : bb->succs) + /* PHI arguments are indexed by incoming (predecessor) edges. */ + for (edge e : bb->preds) { location_t phi_loc = gimple_phi_arg_location_from_edge (phi, e); -- 2.34.1