From: Uros Bizjak Date: Tue, 7 Jun 2016 16:01:50 +0000 (+0200) Subject: re PR target/71389 (ICE on trunk gcc on ivybridge target (df_refs_verify)) X-Git-Tag: releases/gcc-4.9.4~138 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ff26074675a4fc03e55b7efb44e62925a50e3158;p=thirdparty%2Fgcc.git 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: r237179 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 49e0f89a75e2..108ac653d4fc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2016-06-07 Uros Bizjak + + 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. + 2016-06-05 Uros Bizjak Backport from mainline @@ -826,7 +833,7 @@ Backport from mainline 2015-11-26 Kyrylo Tkachov - Bernd Schmidt + Bernd Schmidt PR rtl-optimization/67226 * calls.c (store_one_arg): Take into account @@ -838,7 +845,7 @@ Backport from mainline 2015-11-24 Bernd Schmidt - Kyrylo Tkachov + Kyrylo Tkachov PR rtl-optimization/68194 PR rtl-optimization/68328 @@ -1974,7 +1981,7 @@ Backport from mainline r222205 2015-04-17 Bill Schmidt - Jakub Jelinek + Jakub Jelinek PR target/65787 * config/rs6000/rs6000.c (rtx_is_swappable_p): Ensure that a diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 20ad2cd0999d..733e3bdbdf49 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -17024,7 +17024,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 emit_insn (store_unaligned (op0, op1)); @@ -17332,7 +17332,7 @@ ix86_expand_vector_move_misalign (enum 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))); } } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f896f6bf3fa9..9d0cb20f03b9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-06-07 Uros Bizjak + + PR target/71389 + * g++.dg/pr71389.C: New test. + 2016-05-26 Jerry DeLisle Backport from trunk. diff --git a/gcc/testsuite/g++.dg/pr71389.C b/gcc/testsuite/g++.dg/pr71389.C new file mode 100644 index 000000000000..023abe1755cb --- /dev/null +++ b/gcc/testsuite/g++.dg/pr71389.C @@ -0,0 +1,23 @@ +// { dg-do compile { target i?86-*-* x86_64-*-* } } +// { dg-options "-std=c++11 -O3 -march=ivybridge" } + +#include + +extern int le_s6, le_s9, le_s11; +long foo_v14[16][16]; + +void fn1() { + std::array, 16> v13; + for (; le_s6;) + for (int k1 = 2; k1 < 4; k1 = k1 + 1) { + for (int n1 = 0; n1 < le_s9; n1 = 8) { + *foo_v14[6] = 20923310; + for (int i2 = n1; i2 < n1 + 8; i2 = i2 + 1) + v13.at(5).at(i2 + 6 - n1) = 306146921; + } + + for (int l2 = 0; l2 < le_s11; l2 = l2 + 1) + *(l2 + v13.at(5).begin()) = 306146921; + } + v13.at(le_s6 - 4); +}