mirror of git://gcc.gnu.org/git/gcc.git
re PR rtl-optimization/69891 (wrong code with -mstringop-strategy=libcall @ i686)
PR rtl-optimization/69891 * dse.c (scan_insn): If we can't figure out memset arguments or they are non-constant, call clear_rhs_from_active_local_stores. * gcc.target/i386/pr69891.c: New test. Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com> From-SVN: r233743
This commit is contained in:
parent
0884062c2c
commit
a2ad54a07a
|
|
@ -1,3 +1,10 @@
|
|||
2016-02-26 Jakub Jelinek <jakub@redhat.com>
|
||||
Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
PR rtl-optimization/69891
|
||||
* dse.c (scan_insn): If we can't figure out memset arguments
|
||||
or they are non-constant, call clear_rhs_from_active_local_stores.
|
||||
|
||||
2016-02-26 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* doc/extend.texi: Mention clog10, clog10f an clog10l
|
||||
|
|
|
|||
|
|
@ -2556,6 +2556,8 @@ scan_insn (bb_info_t bb_info, rtx_insn *insn)
|
|||
active_local_stores = insn_info;
|
||||
}
|
||||
}
|
||||
else
|
||||
clear_rhs_from_active_local_stores ();
|
||||
}
|
||||
}
|
||||
else if (SIBLING_CALL_P (insn) && reload_completed)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,8 @@
|
|||
2016-02-26 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR rtl-optimization/69891
|
||||
* gcc.target/i386/pr69891.c: New test.
|
||||
|
||||
2016-02-26 Michael Meissner <meissner@linux.vnet.ibm.com>
|
||||
Bill Schmidt <wschmidt@linux.vnet.ibm.com>
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
/* PR rtl-optimization/69891 */
|
||||
/* { dg-do run } */
|
||||
/* { dg-options "-O -fno-tree-fre -mstringop-strategy=libcall -Wno-psabi" } */
|
||||
/* { dg-additional-options "-mno-sse" { target ia32 } } */
|
||||
|
||||
typedef unsigned short A;
|
||||
typedef unsigned short B __attribute__ ((vector_size (32)));
|
||||
typedef unsigned int C;
|
||||
typedef unsigned int D __attribute__ ((vector_size (32)));
|
||||
typedef unsigned long long E;
|
||||
typedef unsigned long long F __attribute__ ((vector_size (32)));
|
||||
|
||||
__attribute__((noinline, noclone)) unsigned
|
||||
foo(D a, B b, D c, F d)
|
||||
{
|
||||
b /= (B) {1, -c[0]} | 1;
|
||||
c[0] |= 7;
|
||||
a %= c | 1;
|
||||
c ^= c;
|
||||
return a[0] + b[15] + c[0] + d[3];
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
unsigned x = foo ((D) {}, (B) {}, (D) {}, (F) {});
|
||||
if (x != 0)
|
||||
__builtin_abort ();
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in New Issue