Message ID | 20240516100118.938171-3-aldyh@redhat.com |
---|---|
State | New |
Headers | show |
Series | [COMMITTED] Revert "Revert: "Enable prange support."" | expand |
On Thu, May 16, 2024 at 12:01:01PM +0200, Aldy Hernandez wrote: > This reverts commit d7bb8eaade3cd3aa70715c8567b4d7b08098e699 and enables prange > support again. Please don't do this. This breaks ChangeLog generation, will need to handle it tomorrow by hand again. Both the ammendments to the git (cherry-pick -x or revert) added message lines This reverts commit COMMITHASH. and (cherry picked from commit COMMITHASH) and revert of revert. Jakub
Wait, what's the preferred way of reverting a patch? I followed what I saw in: commit 04ee1f788ceaa4c7f777ff3b9441ae076191439c Author: Jeff Law <jlaw@ventanamicro.com> Date: Mon May 13 21:42:38 2024 -0600 Revert "[PATCH v2 1/3] RISC-V: movmem for RISCV with V extension" This reverts commit df15eb15b5f820321c81efc75f0af13ff8c0dd5b. and here: commit 0c6dd4b0973738ce43e76b468a002ab5eb58aaf4 Author: YunQiang Su <syq@debian.org> Date: Mon May 13 14:15:38 2024 +0800 Revert "MIPS: Support constraint 'w' for MSA instruction" This reverts commit 9ba01240864ac446052d97692e2199539b7c76d8. and here: commit f6ce85502eb2e4e7bbd9b3c6c1c065a004f8f531 Author: Hans-Peter Nilsson <hp@bitrange.com> Date: Wed May 8 04:11:20 2024 +0200 Revert "Revert "testsuite/gcc.target/cris/pr93372-2.c: Handle xpass from combine improvement"" This reverts commit 39f81924d88e3cc197fc3df74204c9b5e01e12f7. etc etc. Next time, would you like me to add manual changelog entries? My apologies, I thought what I did was the blessed way of doing things. Aldy On Thu, May 16, 2024 at 12:08 PM Jakub Jelinek <jakub@redhat.com> wrote: > > On Thu, May 16, 2024 at 12:01:01PM +0200, Aldy Hernandez wrote: > > This reverts commit d7bb8eaade3cd3aa70715c8567b4d7b08098e699 and enables prange > > support again. > > Please don't do this. > This breaks ChangeLog generation, will need to handle it tomorrow by hand again. > Both the ammendments to the git (cherry-pick -x or revert) added message > lines > This reverts commit COMMITHASH. > and > (cherry picked from commit COMMITHASH) > and revert of revert. > > Jakub >
On Thu, 2024-05-16 at 12:14 +0200, Aldy Hernandez wrote: > Wait, what's the preferred way of reverting a patch? I followed what > I saw in: > > commit 04ee1f788ceaa4c7f777ff3b9441ae076191439c > Author: Jeff Law <jlaw@ventanamicro.com> > Date: Mon May 13 21:42:38 2024 -0600 > > Revert "[PATCH v2 1/3] RISC-V: movmem for RISCV with V extension" > > This reverts commit df15eb15b5f820321c81efc75f0af13ff8c0dd5b. Revert is OK, but revert revert is not. https://gcc.gnu.org/pipermail/gcc-patches/2024-May/651144.html
On Thu, May 16, 2024 at 12:14:09PM +0200, Aldy Hernandez wrote: > Wait, what's the preferred way of reverting a patch? I followed what I saw in: Reverting a patch (that isn't a reversion) just push git revert. The important part is not to modify the This reverts commit line from what git revert created. > commit 04ee1f788ceaa4c7f777ff3b9441ae076191439c > Author: Jeff Law <jlaw@ventanamicro.com> > Date: Mon May 13 21:42:38 2024 -0600 > > Revert "[PATCH v2 1/3] RISC-V: movmem for RISCV with V extension" > > This reverts commit df15eb15b5f820321c81efc75f0af13ff8c0dd5b. So, this is just fine. > and here: > > commit 0c6dd4b0973738ce43e76b468a002ab5eb58aaf4 > Author: YunQiang Su <syq@debian.org> > Date: Mon May 13 14:15:38 2024 +0800 > > Revert "MIPS: Support constraint 'w' for MSA instruction" > > This reverts commit 9ba01240864ac446052d97692e2199539b7c76d8. And this too. What is not fine is hand edit the message: This reverts commit 9ba01240864ac446052d97692e2199539b7c76d8 because foo and bar. You can do that separately, so This reverts commit 9ba01240864ac446052d97692e2199539b7c76d8. The reversion is because of foo and bar. Or being further creative: This reverts commit r13-8390-g9de6ff5ec9a46951d2. etc. > commit f6ce85502eb2e4e7bbd9b3c6c1c065a004f8f531 > Author: Hans-Peter Nilsson <hp@bitrange.com> > Date: Wed May 8 04:11:20 2024 +0200 > > Revert "Revert "testsuite/gcc.target/cris/pr93372-2.c: Handle > xpass from combine improvement"" > > This reverts commit 39f81924d88e3cc197fc3df74204c9b5e01e12f7. This one is not fine. Our current infrastructure for ChangeLog generation can't deal with that and there is no agreement what to write in the ChangeLog for it anyway, whether 2 reversions turn it into Reapply commit: or 2 Revert: lines? What happens on 3rd reversion? So, one needs to manually remove the This reverts commit 39f81924d88e3cc197fc3df74204c9b5e01e12f7. line and supply ChangeLog entry. For cases like this or the ammended lines (or say if This reverts commit or (cherry-picked from ....) lines refer to invalid commit the daily DATESTAMP update then fails, I need to add manually all problematic commits to IGNORED_COMMITS, rerun it by hand and then write the ChangeLog entries by hand. See https://gcc.gnu.org/r13-8764 https://gcc.gnu.org/r15-426 https://gcc.gnu.org/r15-345 https://gcc.gnu.org/r15-344 https://gcc.gnu.org/r15-341 https://gcc.gnu.org/r14-9832 https://gcc.gnu.org/r14-9830 for what I had to do only in April/May for this. Jakub
diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc index 72ac2552311..bdd2832873a 100644 --- a/gcc/gimple-range-cache.cc +++ b/gcc/gimple-range-cache.cc @@ -274,10 +274,10 @@ sbr_sparse_bitmap::sbr_sparse_bitmap (tree t, vrange_allocator *allocator, // Pre-cache zero and non-zero values for pointers. if (POINTER_TYPE_P (t)) { - int_range<2> nonzero; + prange nonzero; nonzero.set_nonzero (t); m_range[1] = m_range_allocator->clone (nonzero); - int_range<2> zero; + prange zero; zero.set_zero (t); m_range[2] = m_range_allocator->clone (zero); } diff --git a/gcc/gimple-range-fold.cc b/gcc/gimple-range-fold.cc index 9c4ad1ee7b9..a9c8c4d03e6 100644 --- a/gcc/gimple-range-fold.cc +++ b/gcc/gimple-range-fold.cc @@ -597,7 +597,7 @@ fold_using_range::fold_stmt (vrange &r, gimple *s, fur_source &src, tree name) // Process addresses. if (gimple_code (s) == GIMPLE_ASSIGN && gimple_assign_rhs_code (s) == ADDR_EXPR) - return range_of_address (as_a <irange> (r), s, src); + return range_of_address (as_a <prange> (r), s, src); gimple_range_op_handler handler (s); if (handler) @@ -757,7 +757,7 @@ fold_using_range::range_of_range_op (vrange &r, // If a range cannot be calculated, set it to VARYING and return true. bool -fold_using_range::range_of_address (irange &r, gimple *stmt, fur_source &src) +fold_using_range::range_of_address (prange &r, gimple *stmt, fur_source &src) { gcc_checking_assert (gimple_code (stmt) == GIMPLE_ASSIGN); gcc_checking_assert (gimple_assign_rhs_code (stmt) == ADDR_EXPR); diff --git a/gcc/gimple-range-fold.h b/gcc/gimple-range-fold.h index 7cbe15d05e5..c7c599bfc93 100644 --- a/gcc/gimple-range-fold.h +++ b/gcc/gimple-range-fold.h @@ -157,7 +157,7 @@ protected: fur_source &src); bool range_of_call (vrange &r, gcall *call, fur_source &src); bool range_of_cond_expr (vrange &r, gassign* cond, fur_source &src); - bool range_of_address (irange &r, gimple *s, fur_source &src); + bool range_of_address (prange &r, gimple *s, fur_source &src); bool range_of_phi (vrange &r, gphi *phi, fur_source &src); void range_of_ssa_name_with_loop_info (vrange &, tree, class loop *, gphi *, fur_source &src); diff --git a/gcc/gimple-range-infer.cc b/gcc/gimple-range-infer.cc index c8e8b9b60ac..d5e1aa14275 100644 --- a/gcc/gimple-range-infer.cc +++ b/gcc/gimple-range-infer.cc @@ -123,7 +123,7 @@ gimple_infer_range::add_nonzero (tree name) { if (!gimple_range_ssa_p (name)) return; - int_range<2> nz; + prange nz; nz.set_nonzero (TREE_TYPE (name)); add_range (name, nz); } diff --git a/gcc/gimple-range-op.cc b/gcc/gimple-range-op.cc index 7321342b00d..aec3f39ec0e 100644 --- a/gcc/gimple-range-op.cc +++ b/gcc/gimple-range-op.cc @@ -1107,7 +1107,7 @@ class cfn_strlen : public range_operator { public: using range_operator::fold_range; - virtual bool fold_range (irange &r, tree type, const irange &, + virtual bool fold_range (irange &r, tree type, const prange &, const irange &, relation_trio) const { wide_int max = irange_val_max (ptrdiff_type_node); diff --git a/gcc/gimple-range-path.cc b/gcc/gimple-range-path.cc index 96c6ac6b6a5..f1a12f76144 100644 --- a/gcc/gimple-range-path.cc +++ b/gcc/gimple-range-path.cc @@ -443,7 +443,7 @@ path_range_query::compute_ranges_in_block (basic_block bb) void path_range_query::adjust_for_non_null_uses (basic_block bb) { - int_range_max r; + prange r; bitmap_iterator bi; unsigned i; diff --git a/gcc/gimple-ssa-warn-access.cc b/gcc/gimple-ssa-warn-access.cc index 2c10d19e7f3..0cd5b6d6ef4 100644 --- a/gcc/gimple-ssa-warn-access.cc +++ b/gcc/gimple-ssa-warn-access.cc @@ -4213,7 +4213,7 @@ pass_waccess::check_pointer_uses (gimple *stmt, tree ptr, where the realloc call is known to have failed are valid. Ignore pointers that nothing is known about. Those could have escaped along with their nullness. */ - value_range vr; + prange vr; if (m_ptr_qry.rvals->range_of_expr (vr, realloc_lhs, use_stmt)) { if (vr.zero_p ()) diff --git a/gcc/ipa-cp.h b/gcc/ipa-cp.h index abeaaa4053e..e62a09f38af 100644 --- a/gcc/ipa-cp.h +++ b/gcc/ipa-cp.h @@ -296,7 +296,7 @@ bool values_equal_for_ipcp_p (tree x, tree y); static inline bool ipa_supports_p (tree type) { - return irange::supports_p (type); + return irange::supports_p (type) || prange::supports_p (type); } #endif /* IPA_CP_H */ diff --git a/gcc/range-op-ptr.cc b/gcc/range-op-ptr.cc index c24097a1c30..9421d3cd21d 100644 --- a/gcc/range-op-ptr.cc +++ b/gcc/range-op-ptr.cc @@ -1684,8 +1684,4 @@ range_op_table::initialize_pointer_ops () { set (POINTER_PLUS_EXPR, op_pointer_plus); set (POINTER_DIFF_EXPR, op_pointer_diff); - set (BIT_AND_EXPR, op_hybrid_and); - set (BIT_IOR_EXPR, op_hybrid_or); - set (MIN_EXPR, op_hybrid_min); - set (MAX_EXPR, op_hybrid_max); } diff --git a/gcc/range-op.cc b/gcc/range-op.cc index 852d59c20e9..d188d1a1b63 100644 --- a/gcc/range-op.cc +++ b/gcc/range-op.cc @@ -102,23 +102,13 @@ range_op_table::range_op_table () set (MINUS_EXPR, op_minus); set (NEGATE_EXPR, op_negate); set (MULT_EXPR, op_mult); - - // Occur in both integer and pointer tables, but currently share - // integral implementation. set (ADDR_EXPR, op_addr); set (BIT_NOT_EXPR, op_bitwise_not); set (BIT_XOR_EXPR, op_bitwise_xor); - - // These are in both integer and pointer tables, but pointer has a different - // implementation. - // If commented out, there is a hybrid version in range-op-ptr.cc which - // is used until there is a pointer range class. Then we can simply - // uncomment the operator here and use the unified version. - - // set (BIT_AND_EXPR, op_bitwise_and); - // set (BIT_IOR_EXPR, op_bitwise_or); - // set (MIN_EXPR, op_min); - // set (MAX_EXPR, op_max); + set (BIT_AND_EXPR, op_bitwise_and); + set (BIT_IOR_EXPR, op_bitwise_or); + set (MIN_EXPR, op_min); + set (MAX_EXPR, op_max); } // Instantiate a default range operator for opcodes with no entry. diff --git a/gcc/tree-ssa-structalias.cc b/gcc/tree-ssa-structalias.cc index 9c63305063c..bb59c6a7c02 100644 --- a/gcc/tree-ssa-structalias.cc +++ b/gcc/tree-ssa-structalias.cc @@ -6833,7 +6833,7 @@ find_what_p_points_to (tree fndecl, tree p) struct ptr_info_def *pi; tree lookup_p = p; varinfo_t vi; - value_range vr; + prange vr; get_range_query (DECL_STRUCT_FUNCTION (fndecl))->range_of_expr (vr, p); bool nonnull = vr.nonzero_p (); diff --git a/gcc/value-range.cc b/gcc/value-range.cc index 5bcb2c3f650..334ffb70fbc 100644 --- a/gcc/value-range.cc +++ b/gcc/value-range.cc @@ -1518,6 +1518,7 @@ irange::verify_range () gcc_checking_assert (m_num_ranges == 0); return; } + gcc_checking_assert (supports_p (type ())); gcc_checking_assert (m_num_ranges <= m_max_ranges); // Legacy allowed these to represent VARYING for unknown types. diff --git a/gcc/value-range.h b/gcc/value-range.h index 37ce91dc52d..44cdbd717f4 100644 --- a/gcc/value-range.h +++ b/gcc/value-range.h @@ -994,7 +994,7 @@ irange::varying_compatible_p () const const wide_int &u = m_base[1]; tree t = m_type; - if (m_kind == VR_VARYING && t == error_mark_node) + if (m_kind == VR_VARYING) return true; unsigned prec = TYPE_PRECISION (t); @@ -1039,7 +1039,7 @@ irange::nonzero_p () const inline bool irange::supports_p (const_tree type) { - return INTEGRAL_TYPE_P (type) || POINTER_TYPE_P (type); + return INTEGRAL_TYPE_P (type); } inline bool