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