This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/71114] [7 Regression] Several test suite failures on x86_64-apple-darwin* after revision r236090


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

--- Comment #13 from Ilya Enkovich <ienkovich at gcc dot gnu.org> ---
Looks I found the problem.  validize_mem generates new instructions which are
placed wrongly.  This patch should help.  Unfortunately I can't test it
properly on Darwin.

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 046717b..5fdd12b 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -3688,7 +3688,13 @@ dimode_scalar_chain::convert_op (rtx *op, rtx_insn
*insn)
                                        gen_rtvec (2, *op, const0_rtx));

       if (!standard_sse_constant_p (vec_cst, V2DImode))
-       vec_cst = validize_mem (force_const_mem (V2DImode, vec_cst));
+       {
+         start_sequence ();
+         vec_cst = validize_mem (force_const_mem (V2DImode, vec_cst));
+         rtx_insn *seq = get_insns ();
+         end_sequence ();
+         emit_insn_before (insns, insn)
+       }

       emit_insn_before (gen_move_insn (tmp, vec_cst), insn);
       *op = tmp;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]