https://gcc.gnu.org/g:747a06017196b6344e3f664706a11231ba712548
commit r15-1544-g747a06017196b6344e3f664706a11231ba712548 Author: Andrew MacLeod <amacl...@redhat.com> Date: Mon Jun 17 16:07:16 2024 -0400 Print "Global Exported" to dump_file from set_range_info. * gimple-range.cc (gimple_ranger::register_inferred_ranges): Do not dump global range info after set_range_info. (gimple_ranger::register_transitive_inferred_ranges): Likewise. (dom_ranger::range_of_stmt): Likewise. * tree-ssanames.cc (set_range_info): If global range info changes, maybe print new range to dump_file. * tree-vrp.cc (remove_unreachable::handle_early): Do not dump global range info after set_range_info. (remove_unreachable::remove): Likewise. (remove_unreachable::remove_and_update_globals): Likewise. (pass_assumptions::execute): Likewise. Diff: --- gcc/gimple-range.cc | 60 ++++++++++++++-------------------------------------- gcc/tree-ssanames.cc | 42 +++++++++++++++++++++++------------- gcc/tree-vrp.cc | 43 ++++--------------------------------- 3 files changed, 47 insertions(+), 98 deletions(-) diff --git a/gcc/gimple-range.cc b/gcc/gimple-range.cc index 4e507485f5e..50448ef81a2 100644 --- a/gcc/gimple-range.cc +++ b/gcc/gimple-range.cc @@ -495,15 +495,8 @@ gimple_ranger::register_inferred_ranges (gimple *s) if (lhs) { value_range tmp (TREE_TYPE (lhs)); - if (range_of_stmt (tmp, s, lhs) && !tmp.varying_p () - && set_range_info (lhs, tmp) && dump_file) - { - fprintf (dump_file, "Global Exported: "); - print_generic_expr (dump_file, lhs, TDF_SLIM); - fprintf (dump_file, " = "); - tmp.dump (dump_file); - fputc ('\n', dump_file); - } + if (range_of_stmt (tmp, s, lhs) && !tmp.varying_p ()) + set_range_info (lhs, tmp); } m_cache.apply_inferred_ranges (s); } @@ -562,38 +555,25 @@ gimple_ranger::register_transitive_inferred_ranges (basic_block bb) void gimple_ranger::export_global_ranges () { - /* Cleared after the table header has been printed. */ - bool print_header = true; + if (dump_file) + { + /* Print the header only when there's something else + to print below. */ + fprintf (dump_file, "Exporting new global ranges:\n"); + fprintf (dump_file, "============================\n"); + } for (unsigned x = 1; x < num_ssa_names; x++) { tree name = ssa_name (x); if (!name) continue; value_range r (TREE_TYPE (name)); - if (name && !SSA_NAME_IN_FREE_LIST (name) - && gimple_range_ssa_p (name) - && m_cache.get_global_range (r, name) - && !r.varying_p()) - { - bool updated = set_range_info (name, r); - if (!updated || !dump_file) - continue; - - if (print_header) - { - /* Print the header only when there's something else - to print below. */ - fprintf (dump_file, "Exported global range table:\n"); - fprintf (dump_file, "============================\n"); - print_header = false; - } - - print_generic_expr (dump_file, name , TDF_SLIM); - fprintf (dump_file, " : "); - r.dump (dump_file); - fprintf (dump_file, "\n"); - } + if (name && !SSA_NAME_IN_FREE_LIST (name) && gimple_range_ssa_p (name) + && m_cache.get_global_range (r, name) && !r.varying_p()) + set_range_info (name, r); } + if (dump_file) + fprintf (dump_file, "========= Done =============\n"); } // Print the known table values to file F. @@ -1069,16 +1049,8 @@ dom_ranger::range_of_stmt (vrange &r, gimple *s, tree name) // If there is a new calculated range and it is not varying, set // a global range. if (ret && name && m_global.merge_range (name, r) && !r.varying_p ()) - { - if (set_range_info (name, r) && dump_file) - { - fprintf (dump_file, "Global Exported: "); - print_generic_expr (dump_file, name, TDF_SLIM); - fprintf (dump_file, " = "); - r.dump (dump_file); - fputc ('\n', dump_file); - } - } + set_range_info (name, r); + if (idx) tracer.trailer (idx, " ", ret, name, r); return ret; diff --git a/gcc/tree-ssanames.cc b/gcc/tree-ssanames.cc index 615d522d0b1..411ea848c49 100644 --- a/gcc/tree-ssanames.cc +++ b/gcc/tree-ssanames.cc @@ -25,6 +25,7 @@ along with GCC; see the file COPYING3. If not see #include "gimple.h" #include "tree-pass.h" #include "ssa.h" +#include "gimple-pretty-print.h" #include "gimple-iterator.h" #include "stor-layout.h" #include "tree-into-ssa.h" @@ -425,23 +426,34 @@ set_range_info (tree name, const vrange &r) struct ptr_info_def *pi = get_ptr_info (name); // If R is nonnull and pi is not, set nonnull. if (r.nonzero_p () && (!pi || pi->pt.null)) - { - set_ptr_nonnull (name); - return true; - } - return false; + set_ptr_nonnull (name); + else + return false; } - - value_range tmp (type); - if (range_info_p (name)) - range_info_get_range (name, tmp); else - tmp.set_varying (type); - // If the result doesn't change, or is undefined, return false. - if (!tmp.intersect (r) || tmp.undefined_p ()) - return false; - - return range_info_set_range (name, tmp); + { + value_range tmp (type); + if (range_info_p (name)) + range_info_get_range (name, tmp); + else + tmp.set_varying (type); + // If the result doesn't change, or is undefined, return false. + if (!tmp.intersect (r) || tmp.undefined_p ()) + return false; + if (!range_info_set_range (name, tmp)) + return false; + } + if (dump_file) + { + value_range tmp (type); + fprintf (dump_file, "Global Exported: "); + print_generic_expr (dump_file, name, TDF_SLIM); + fprintf (dump_file, " = "); + gimple_range_global (tmp, name); + tmp.dump (dump_file); + fputc ('\n', dump_file); + } + return true; } /* Set nonnull attribute to pointer NAME. */ diff --git a/gcc/tree-vrp.cc b/gcc/tree-vrp.cc index 6e96b639b70..4fc33e63e7d 100644 --- a/gcc/tree-vrp.cc +++ b/gcc/tree-vrp.cc @@ -228,15 +228,6 @@ remove_unreachable::handle_early (gimple *s, edge e) // Nothing at this late stage we can do if the write fails. if (!set_range_info (name, r)) continue; - if (dump_file) - { - fprintf (dump_file, "Global Exported (via early unreachable): "); - print_generic_expr (dump_file, name, TDF_SLIM); - fprintf (dump_file, " = "); - gimple_range_global (r, name); - r.dump (dump_file); - fputc ('\n', dump_file); - } } tree ssa = lhs_p ? gimple_cond_lhs (s) : gimple_cond_rhs (s); @@ -287,16 +278,8 @@ remove_unreachable::remove () if (name && fully_replaceable (name, src)) { value_range r (TREE_TYPE (name)); - if (gori_name_on_edge (r, name, e, &m_ranger) - && set_range_info (name, r) &&(dump_file)) - { - fprintf (dump_file, "Global Exported (via unreachable): "); - print_generic_expr (dump_file, name, TDF_SLIM); - fprintf (dump_file, " = "); - gimple_range_global (r, name); - r.dump (dump_file); - fputc ('\n', dump_file); - } + if (gori_name_on_edge (r, name, e, &m_ranger)) + set_range_info (name, r); } change = true; @@ -419,15 +402,6 @@ remove_unreachable::remove_and_update_globals () if (!set_range_info (name, r)) continue; change = true; - if (dump_file) - { - fprintf (dump_file, "Global Exported (via unreachable): "); - print_generic_expr (dump_file, name, TDF_SLIM); - fprintf (dump_file, " = "); - gimple_range_global (r, name); - r.dump (dump_file); - fputc ('\n', dump_file); - } } return change; } @@ -1404,18 +1378,9 @@ public: if (!value_range::supports_type_p (type)) continue; value_range assume_range (type); + // Set the global range of NAME to anything calculated. if (query.assume_range_p (assume_range, name)) - { - // Set the global range of NAME to anything calculated. - set_range_info (name, assume_range); - if (dump_file) - { - print_generic_expr (dump_file, name, TDF_SLIM); - fprintf (dump_file, " -> "); - assume_range.dump (dump_file); - fputc ('\n', dump_file); - } - } + set_range_info (name, assume_range); } if (dump_file) {