https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80706
--- Comment #7 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Uroš Bizjak from comment #5) --cut here-- diff --git a/gcc/config/i386/sync.md b/gcc/config/i386/sync.md index 20d46fe..895a1ea 100644 --- a/gcc/config/i386/sync.md +++ b/gcc/config/i386/sync.md @@ -222,7 +222,8 @@ "!TARGET_64BIT && peep2_reg_dead_p (2, operands[0]) && rtx_equal_p (operands[4], adjust_address_nv (operands[2], DFmode, 0))" - [(set (match_dup 3) (match_dup 5))] + [(set (match_dup 3) (match_dup 5)) + (set (match_dup 4) (match_dup 3))] "operands[5] = gen_lowpart (DFmode, operands[1]);") (define_peephole2 @@ -235,7 +236,8 @@ "!TARGET_64BIT && peep2_reg_dead_p (2, operands[0]) && rtx_equal_p (operands[4], adjust_address_nv (operands[2], DFmode, 0))" - [(set (match_dup 3) (match_dup 5))] + [(set (match_dup 3) (match_dup 5)) + (set (match_dup 4) (match_dup 3))] "operands[5] = gen_lowpart (DFmode, operands[1]);") (define_expand "atomic_store<mode>" @@ -338,7 +340,8 @@ "!TARGET_64BIT && peep2_reg_dead_p (3, operands[2]) && rtx_equal_p (operands[0], adjust_address_nv (operands[3], DFmode, 0))" - [(set (match_dup 5) (match_dup 1))] + [(set (match_dup 5) (match_dup 1)) + (set (match_dup 0) (match_dup 1))] "operands[5] = gen_lowpart (DFmode, operands[4]);") (define_peephole2 @@ -351,7 +354,8 @@ "!TARGET_64BIT && peep2_reg_dead_p (3, operands[2]) && rtx_equal_p (operands[0], adjust_address_nv (operands[3], DFmode, 0))" - [(set (match_dup 5) (match_dup 1))] + [(set (match_dup 5) (match_dup 1)) + (set (match_dup 0) (match_dup 1))] "operands[5] = gen_lowpart (DFmode, operands[4]);") ;; ??? You'd think that we'd be able to perform this via FLOAT + FIX_TRUNC --cut here-- > Jakub, does the above patch fix the failure? Bah, cut-n-pasto... the above should be correct patch.