https://gcc.gnu.org/g:9739ae9384dd7cd3bb1c7683d6b80b7a9116eaf8

commit r16-1028-g9739ae9384dd7cd3bb1c7683d6b80b7a9116eaf8
Author: Andrew Pinski <quic_apin...@quicinc.com>
Date:   Thu May 29 23:50:08 2025 -0700

    Have TODO_verify_* not set by any pass
    
    This is a follow up to the patch set starting at 
https://gcc.gnu.org/pipermail/gcc-patches/2014-April/386650.html.
    
    Currently TODO_verify_{il,all} is set by a few passes as TODOs afterwards 
but
    we don't need to do that any more. Those were mostly removed back in
    https://gcc.gnu.org/pipermail/gcc-patches/2014-May/387647.html
    
    And now since TODO_verify_all is no longer used, remove it too.
    Removes last_verified from the function structure since it is always 0 
before the
    call to execute_todo that has TODO_verify_all set on it.
    
    Also this removes the ability for good to use TODO_verify_il from the 
passes and reserves
    bit 31 of the TODO for the verfification and internally only the passes.cc 
code.
    
    gcc/ChangeLog:
    
            * function.h (struct function): Remove last_verified.
            * gimple-harden-conditionals.cc (pass_data_harden_compares): Remove
            TODO_verify_il.
            (pass_data_harden_conditional_branches): Likewise.
            * gimple-harden-control-flow.cc 
(pass_harden_control_flow_redundancy::execute):
            Don't return TODO_verify_il.
            * ipa-strub.cc (pass_data_ipa_strub): Remove TODO_verify_il.
            * passes.cc (TODO_verify_il): Define.
            (execute_function_todo): Don't use or set last_verified.
            (clear_last_verified): Remove.
            (execute_one_ipa_transform_pass): Update comment before 
execute_todo.
            Assert that none of the todos have TODO_verify_il set on it.
            (execute_one_pass): Don't call clear_last_verified on all functions.
            Assert that none of the todos have TODO_verify_il set on it.
            * tree-inline.cc (initialize_cfun): Don't copy last_verified.
            * tree-pass.h (TODO_verify_all): Remove.
            * tree-vrp.cc (pass_data_early_vrp): Remove TODO_verify_all.
            (pass_data_fast_vrp): Likewise.
    
    Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>

Diff:
---
 gcc/function.h                    |  1 -
 gcc/gimple-harden-conditionals.cc |  6 ++----
 gcc/gimple-harden-control-flow.cc |  3 +--
 gcc/ipa-strub.cc                  |  3 +--
 gcc/passes.cc                     | 23 +++++++++--------------
 gcc/tree-inline.cc                |  1 -
 gcc/tree-pass.h                   |  6 +++---
 gcc/tree-vrp.cc                   |  4 ++--
 8 files changed, 18 insertions(+), 29 deletions(-)

diff --git a/gcc/function.h b/gcc/function.h
index 2260d6704ecc..370629f4de2c 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -333,7 +333,6 @@ struct GTY(()) function {
 
   /* Properties used by the pass manager.  */
   unsigned int curr_properties;
-  unsigned int last_verified;
 
   /* Different from normal TODO_flags which are handled right at the
      beginning or the end of one pass execution, the pending_TODOs
diff --git a/gcc/gimple-harden-conditionals.cc 
b/gcc/gimple-harden-conditionals.cc
index 3ad3bb98edd7..d4a418d481a7 100644
--- a/gcc/gimple-harden-conditionals.cc
+++ b/gcc/gimple-harden-conditionals.cc
@@ -61,8 +61,7 @@ const pass_data pass_data_harden_compares = {
   0,       // properties_destroyed
   0,       // properties_start
   TODO_update_ssa
-  | TODO_cleanup_cfg
-  | TODO_verify_il, // properties_finish
+  | TODO_cleanup_cfg, // properties_finish
 };
 
 class pass_harden_compares : public gimple_opt_pass
@@ -96,8 +95,7 @@ const pass_data pass_data_harden_conditional_branches = {
   0,       // properties_destroyed
   0,       // properties_start
   TODO_update_ssa
-  | TODO_cleanup_cfg
-  | TODO_verify_il, // properties_finish
+  | TODO_cleanup_cfg, // properties_finish
 };
 
 class pass_harden_conditional_branches : public gimple_opt_pass
diff --git a/gcc/gimple-harden-control-flow.cc 
b/gcc/gimple-harden-control-flow.cc
index e46acafbae44..f129ff1e0775 100644
--- a/gcc/gimple-harden-control-flow.cc
+++ b/gcc/gimple-harden-control-flow.cc
@@ -1549,8 +1549,7 @@ pass_harden_control_flow_redundancy::execute (function 
*fun)
 
   return
     TODO_update_ssa
-    | TODO_cleanup_cfg
-    | TODO_verify_il;
+    | TODO_cleanup_cfg;
 }
 
 /* Instantiate a hardcfr pass.  */
diff --git a/gcc/ipa-strub.cc b/gcc/ipa-strub.cc
index 99cc9d930d86..d7c0a9286002 100644
--- a/gcc/ipa-strub.cc
+++ b/gcc/ipa-strub.cc
@@ -1770,8 +1770,7 @@ const pass_data pass_data_ipa_strub = {
   0,       // properties_start
   TODO_update_ssa
   | TODO_cleanup_cfg
-  | TODO_rebuild_cgraph_edges
-  | TODO_verify_il, // properties_finish
+  | TODO_rebuild_cgraph_edges, // properties_finish
 };
 
 class pass_ipa_strub : public simple_ipa_opt_pass
diff --git a/gcc/passes.cc b/gcc/passes.cc
index e86aa1f2d1bd..6c67ffe56ba9 100644
--- a/gcc/passes.cc
+++ b/gcc/passes.cc
@@ -64,6 +64,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "stringpool.h"
 #include "attribs.h"
 
+/* Reserved TODOs */
+#define TODO_verify_il                 (1u << 31)
+
 using namespace gcc;
 
 /* This is used for debugging.  It allows the current pass to printed
@@ -2059,7 +2062,6 @@ execute_function_todo (function *fn, void *data)
 {
   bool from_ipa_pass = (cfun == NULL);
   unsigned int flags = (size_t)data;
-  flags &= ~fn->last_verified;
   if (!flags)
     return;
 
@@ -2127,8 +2129,6 @@ execute_function_todo (function *fn, void *data)
       gcc_assert (dom_info_state (fn, CDI_POST_DOMINATORS) == 
pre_verify_pstate);
     }
 
-  fn->last_verified = flags & TODO_verify_all;
-
   pop_cfun ();
 
   /* For IPA passes make sure to release dominator info, it can be
@@ -2193,14 +2193,6 @@ verify_interpass_invariants (void)
   gcc_checking_assert (!fold_deferring_overflow_warnings_p ());
 }
 
-/* Clear the last verified flag.  */
-
-static void
-clear_last_verified (function *fn, void *data ATTRIBUTE_UNUSED)
-{
-  fn->last_verified = 0;
-}
-
 /* Helper function. Verify that the properties has been turn into the
    properties expected by the pass.  */
 
@@ -2339,13 +2331,15 @@ execute_one_ipa_transform_pass (struct cgraph_node 
*node,
   if (pass->tv_id != TV_NONE)
     timevar_push (pass->tv_id);
 
+  gcc_checking_assert (!(ipa_pass->function_transform_todo_flags_start & 
TODO_verify_il));
   /* Run pre-pass verification.  */
   execute_todo (ipa_pass->function_transform_todo_flags_start);
 
   /* Do it!  */
   todo_after = ipa_pass->function_transform (node);
 
-  /* Run post-pass cleanup and verification.  */
+  /* Run post-pass cleanup.  */
+  gcc_checking_assert (!(todo_after & TODO_verify_il));
   execute_todo (todo_after);
   verify_interpass_invariants ();
 
@@ -2649,6 +2643,7 @@ execute_one_pass (opt_pass *pass)
 
 
   /* Run pre-pass verification.  */
+  gcc_checking_assert (!(pass->todo_flags_start & TODO_verify_il));
   execute_todo (pass->todo_flags_start);
 
   if (flag_checking)
@@ -2697,11 +2692,11 @@ execute_one_pass (opt_pass *pass)
       return true;
     }
 
-  do_per_function (clear_last_verified, NULL);
-
   do_per_function (update_properties_after_pass, pass);
 
   /* Run post-pass cleanup and verification.  */
+  gcc_checking_assert (!(todo_after & TODO_verify_il));
+  gcc_checking_assert (!(pass->todo_flags_finish & TODO_verify_il));
   execute_todo (todo_after | pass->todo_flags_finish | TODO_verify_il);
   if (profile_report)
     {
diff --git a/gcc/tree-inline.cc b/gcc/tree-inline.cc
index 3289b4f6d050..1a72e31b06cd 100644
--- a/gcc/tree-inline.cc
+++ b/gcc/tree-inline.cc
@@ -2866,7 +2866,6 @@ initialize_cfun (tree new_fndecl, tree callee_fndecl, 
profile_count count)
   cfun->nonlocal_goto_save_area = src_cfun->nonlocal_goto_save_area;
   cfun->function_end_locus = src_cfun->function_end_locus;
   cfun->curr_properties = src_cfun->curr_properties;
-  cfun->last_verified = src_cfun->last_verified;
   cfun->va_list_gpr_size = src_cfun->va_list_gpr_size;
   cfun->va_list_fpr_size = src_cfun->va_list_fpr_size;
   cfun->has_nonlocal_label = src_cfun->has_nonlocal_label;
diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h
index 7cb5a128899a..4139f6d8eace 100644
--- a/gcc/tree-pass.h
+++ b/gcc/tree-pass.h
@@ -236,9 +236,9 @@ protected:
   (PROP_gimple_any | PROP_gimple_lcf | PROP_gimple_leh | PROP_gimple_lomp)
 
 /* To-do flags.  */
+/* Note (1ul << 31) is reserved for TODO_verify_il. */
 #define TODO_do_not_ggc_collect                (1 << 1)
 #define TODO_cleanup_cfg               (1 << 5)
-#define TODO_verify_il                 (1 << 6)
 #define TODO_dump_symtab               (1 << 7)
 #define TODO_remove_functions          (1 << 8)
 
@@ -308,6 +308,8 @@ protected:
    and stop pass manager.  */
 #define TODO_discard_function          (1 << 23)
 
+/* (1ul << 31) is reserved for TODO_verify_il. */
+
 /* Internally used in execute_function_todo().  */
 #define TODO_update_ssa_any            \
     (TODO_update_ssa                   \
@@ -315,8 +317,6 @@ protected:
      | TODO_update_ssa_full_phi                \
      | TODO_update_ssa_only_virtuals)
 
-#define TODO_verify_all TODO_verify_il
-
 /* To-do flags for pending_TODOs.  */
 
 /* Tell the next scalar cleanup pass that there is
diff --git a/gcc/tree-vrp.cc b/gcc/tree-vrp.cc
index 5aeb1e066cf9..cad1a24ab339 100644
--- a/gcc/tree-vrp.cc
+++ b/gcc/tree-vrp.cc
@@ -1297,7 +1297,7 @@ const pass_data pass_data_early_vrp =
   0, /* properties_provided */
   0, /* properties_destroyed */
   0, /* todo_flags_start */
-  ( TODO_cleanup_cfg | TODO_update_ssa | TODO_verify_all ),
+  ( TODO_cleanup_cfg | TODO_update_ssa ),
 };
 
 const pass_data pass_data_fast_vrp =
@@ -1310,7 +1310,7 @@ const pass_data pass_data_fast_vrp =
   0, /* properties_provided */
   0, /* properties_destroyed */
   0, /* todo_flags_start */
-  ( TODO_cleanup_cfg | TODO_update_ssa | TODO_verify_all ),
+  ( TODO_cleanup_cfg | TODO_update_ssa ),
 };

Reply via email to