https://gcc.gnu.org/g:9f9b5d6946f60777694338f00652475240bf2f3e
commit r16-7157-g9f9b5d6946f60777694338f00652475240bf2f3e Author: Roger Sayle <[email protected]> Date: Thu Jan 29 18:48:14 2026 +0000 Allow CONCATs in emit_group_load_1. This one line patch is a pre-requisite to a solution to PR target/123506; an effort to improve middle-end code for returning structures. Currently, emit_group_load_1 contains code to handle a CONCAT returned by force_reg. This tweak avoids the call for force_reg if the source is already a CONCAT, which allows this subroutine to be re-used by target-specific implementations of emit_group_load. Many thanks to Jeff Law for cross-platform testing. 2026-01-29 Roger Sayle <[email protected]> gcc/ChangeLog * expr.cc (emit_group_load_1): Don't call force_reg if orig_src is already a CONCAT. Diff: --- gcc/expr.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/gcc/expr.cc b/gcc/expr.cc index d3dad6c8041c..c279341ffcbc 100644 --- a/gcc/expr.cc +++ b/gcc/expr.cc @@ -3038,6 +3038,7 @@ emit_group_load_1 (rtx *tmps, rtx dst, rtx orig_src, tree type, src = orig_src; if (!MEM_P (orig_src) && (!REG_P (orig_src) || HARD_REGISTER_P (orig_src)) + && GET_CODE (orig_src) != CONCAT && !CONSTANT_P (orig_src)) { gcc_assert (GET_MODE (orig_src) != VOIDmode);
