On 8/10/2026 6:10 AM, Roger Sayle wrote:
This is a ping/revision of my patch to address PR target/48609 incorporating
the latest round of feedback from Richard Sandiford.

The original patch (and motivation) was posted here:
https://gcc.gnu.org/pipermail/gcc-patches/2026-June/721864.html
with fantastic feedback from both Richards, version 2 was posted here:
https://gcc.gnu.org/pipermail/gcc-patches/2026-July/723533.html
This latest version includes the final tweaks suggested here:
https://gcc.gnu.org/pipermail/gcc-patches/2026-July/723545.html
which concluded with Richard Sandiford's words:
LGTM otherwise, but I think someone else should give the final ok.

This patch has been tested on x86_64-pc-linux-gnu with make bootstrap
and make -k check, both with and without --target_board=unix{-m32}
with no new failures.  OK for mainline?


2026-08-10  Roger Sayle  <[email protected]>
             Richard Sandiford  <[email protected]>

gcc/ChangeLog
         PR target/48609
         * rtl.cc (rtvec_series_p): Enhance to allow START to be a
         poly_int64 instead of just an int.
         * rtl.h (rtvec_series_p): Update function prototype.
         * rtlanal.cc (vec_series_highpart_p): Now that rtxvec_series_p
         can handle poly_int64, we handle modes that aren't constant size.
         (vec_series_lowpart_p): Likewise.
         (get_ref_base_and_offset): New function to determine the base RTX
         and byte offset of an arbitrary expression, typically a SUBREG.
         * rtlanal.h (get_ref_base_and_offset): Prototype here.
         * simplify-rtx.cc (simplify_binary_operation_1) <case VEC_CONCAT>:
         Generalize the existing (vec_concat (first_half) (second_half))
         optimization using the new get_ref_base_and_offset function.

gcc/testsuite/ChangeLog
         PR target/48609
         * gcc.target/i386/pr48609.c: New test case.


Thanks again (especially to Richard Sandiford).
OK with a trivial whitespace nit fixed (see below).  No need to re-review.



+
+    default:
+      break;
+      }
+
+    *offset_ptr = offset;
+     return x;
Looks like a trivial whitespace nit here.  I suspect you've got one too many spaces before your return x.




Thanks,
Jeff

Reply via email to