diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2016-06-06 00:55:35 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2016-06-06 00:55:35 +0200 |
commit | 903ca97bc452be391f45e6b9a2f36ac744b6f29c (patch) | |
tree | ec9fe99007c02ce94d4bc08a6718711316b78189 /gcc/config | |
parent | 603e5a828b646bb802c4695b1046c7974fc2112f (diff) | |
download | gcc-903ca97bc452be391f45e6b9a2f36ac744b6f29c.zip gcc-903ca97bc452be391f45e6b9a2f36ac744b6f29c.tar.gz gcc-903ca97bc452be391f45e6b9a2f36ac744b6f29c.tar.bz2 |
re PR target/71389 (ICE on trunk gcc on ivybridge target (df_refs_verify))
PR target/71389
* config/i386/i386.c (ix86_avx256_split_vector_move_misalign):
Copy op1 RTX to avoid invalid sharing.
(ix86_expand_vector_move_misalign): Ditto.
testsuite/ChangeLog:
PR target/71389
* g++.dg/pr71389.C: New test.
From-SVN: r237111
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/i386/i386.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 0873ac7..c191eeb 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -19552,7 +19552,7 @@ ix86_avx256_split_vector_move_misalign (rtx op0, rtx op1) m = adjust_address (op0, mode, 0); emit_insn (extract (m, op1, const0_rtx)); m = adjust_address (op0, mode, 16); - emit_insn (extract (m, op1, const1_rtx)); + emit_insn (extract (m, copy_rtx (op1), const1_rtx)); } else gcc_unreachable (); @@ -19724,7 +19724,7 @@ ix86_expand_vector_move_misalign (machine_mode mode, rtx operands[]) m = adjust_address (op0, V2SFmode, 0); emit_insn (gen_sse_storelps (m, op1)); m = adjust_address (op0, V2SFmode, 8); - emit_insn (gen_sse_storehps (m, op1)); + emit_insn (gen_sse_storehps (m, copy_rtx (op1))); } } else |