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);

Reply via email to