Stop only if there aren't any usable algorithms
When searching for an usable algorithm with -minline-all-stringops, decide_alg stops when it sees libcall even if there is a usable algorithm. It goes into an infinite loop. This patch changes decide_alg to stop searching only if there aren't any usable algorithms. Testd on Linux/x86-64. gcc/ PR target/64108 * config/i386/i386.c (decide_alg): Stop only if there aren't any usable algorithms. gcc/testsuite/ PR target/64108 * gcc.target/i386/memset-strategy-2.c: New test. From-SVN: r218272
This commit is contained in:
parent
fb98f8869b
commit
0f884e6709
|
@ -1,3 +1,9 @@
|
|||
2014-12-02 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR target/64108
|
||||
* config/i386/i386.c (decide_alg): Stop only if there aren't
|
||||
any usable algorithms.
|
||||
|
||||
2014-12-02 Tom de Vries <tom@codesourcery.com>
|
||||
|
||||
PR rtl-optimization/63718
|
||||
|
|
|
@ -24464,7 +24464,8 @@ decide_alg (HOST_WIDE_INT count, HOST_WIDE_INT expected_size,
|
|||
*noalign = alg_noalign;
|
||||
return alg;
|
||||
}
|
||||
break;
|
||||
else if (!any_alg_usable_p)
|
||||
break;
|
||||
}
|
||||
else if (alg_usable_p (candidate, memset))
|
||||
{
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2014-12-02 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR target/64108
|
||||
* gcc.target/i386/memset-strategy-2.c: New test.
|
||||
|
||||
2014-12-02 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* gcc.dg/torture/20141202-1.c: New testcase.
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
/* PR target/64108 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -march=atom -mmemset-strategy=libcall:-1:align -minline-all-stringops" } */
|
||||
|
||||
char a[2048];
|
||||
void t (void)
|
||||
{
|
||||
__builtin_memset (a, 1, 2048);
|
||||
}
|
||||
|
Loading…
Reference in New Issue