]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[Bug gcov-profile/123019][V3] Fix Virtual SSA ICE
authorKugan Vivekanandarajah <kvivekananda@nvidia.com>
Fri, 9 Jan 2026 00:59:27 +0000 (11:59 +1100)
committerKugan Vivekanandarajah <kvivekananda@nvidia.com>
Fri, 9 Jan 2026 01:26:51 +0000 (12:26 +1100)
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>
gcc/auto-profile.cc

index 06ea4015251a8144c70ca868d0ec9758f50391e3..2434936a0a6c843897dfef1fa84c2491cfc56506 100644 (file)
@@ -4567,6 +4567,11 @@ auto_profile (void)
 
     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 ();