This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/71114] [7 Regression] Several test suite failures on x86_64-apple-darwin* after revision r236090
- From: "ienkovich at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 16 May 2016 13:18:46 +0000
- Subject: [Bug target/71114] [7 Regression] Several test suite failures on x86_64-apple-darwin* after revision r236090
- Auto-submitted: auto-generated
- References: <bug-71114-4 at http dot gcc dot gnu dot org/bugzilla/>
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;