https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111010

--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index f3a3305ac4f..d38b9d764d8 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -11511,7 +11511,7 @@
 })

 (define_insn_and_split "*concat<mode><dwi>3_3"
-  [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,r,&r")
+  [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,r,!&r")
        (any_or_plus:<DWI>
          (ashift:<DWI>
            (zero_extend:<DWI>

fixes the issue for me, this disparages the &r,m,m alternative since
that makes any reloading difficult(?) and the early-clobber output
makes register pressure even harder to deal with.

Reply via email to