The bug is a stale Virtual SSA VDEF on calls to functions that have
been marked const or pure.
pure_const pass analyzes function rocksdb::y::y() and determines it has no side
effects and marks it as const.
At this point, existing call sites to y::y() in other functions still have:
# .MEM_12 = VDEF <.MEM_11> rocksdb::y::y (&l, _9);
The VDEF indicates the call modifies memory but now that y::y() is const,
this VDEF is stale
Later passes after feedback_fnsplit SSA verification fails. Added fixup.
gcc/ChangeLog:
2026-01-07 Kugan Vivekanandarajah <kvivekananda@nvidia.com>
PR gcov-profile/123019
* auto-profile.cc (auto_profile): Call execute_fixup_cfg.
Signed-off-by: Kugan Vivekanandarajah <kvivekananda@nvidia.com>
push_cfun (DECL_STRUCT_FUNCTION (node->decl));
+ /* Local pure-const may imply need to fixup the cfg.
+ This is similar to what is done in tree-profile.cc. */
+ if ((execute_fixup_cfg () & TODO_cleanup_cfg))
+ cleanup_tree_cfg ();
+
autofdo::afdo_annotate_cfg ();
compute_function_frequency ();