[Bug middle-end/30442] Expanded array initialization can use memset builtin function
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30442 --- Comment #7 from Richard Guenther rguenth at gcc dot gnu.org 2012-06-05 10:50:22 UTC --- The long long test2(void) { long long a[32]; int i; for (i = 0; i 32; i++) a[i] = 0; return foo(a); } loop is transformed to memset at -O3. The unrolled version is not re-rolled still, and basic-block vectorization does not catch it because of the call in the basic-block. I'm trying to fix that.
[Bug middle-end/30442] Expanded array initialization can use memset builtin function
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30442 --- Comment #8 from Richard Guenther rguenth at gcc dot gnu.org 2012-06-05 12:38:30 UTC --- Author: rguenth Date: Tue Jun 5 12:38:26 2012 New Revision: 188235 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=188235 Log: 2012-06-05 Richard Guenther rguent...@suse.de PR tree-optimization/30442 * tree-vect-data-refs.c (vect_analyze_data_refs): For basic-block vectorization stop analysis at the first stmt we cannot compute a data-reference for instead of giving up completely. * gcc.dg/vect/bb-slp-30.c: New testcase. Added: trunk/gcc/testsuite/gcc.dg/vect/bb-slp-30.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-vect-data-refs.c
[Bug middle-end/30442] Expanded array initialization can use memset builtin function
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30442 --- Comment #9 from Richard Guenther rguenth at gcc dot gnu.org 2012-06-05 12:39:29 UTC --- So, $summary is still true but we now at least vectorize the initialization.
[Bug middle-end/30442] Expanded array initialization can use memset builtin function
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30442 Uros Bizjak ubizjak at gmail dot com changed: What|Removed |Added Last reconfirmed|2007-01-14 05:01:04 |2012-02-06 --- Comment #6 from Uros Bizjak ubizjak at gmail dot com 2012-02-06 21:40:50 UTC --- Reconfirmed with 4.7.
[Bug middle-end/30442] Expanded array initialization can use memset builtin function
--- Comment #5 from irar at il dot ibm dot com 2008-03-13 06:51 --- (In reply to comment #4) This still happens on mainline. I wonder if vectorizer infrastructure can be re-used here to detect unrolled and looped version of memset. In addition to loop that can be vectorized, we have something resembling vectorization of straight code. This code can be vectorized with basic block SLP, which is not implemented yet (currently only SLP in loops is implemented). And looking at comment #3, the rewards from real-world code look really promising. However, in comment #3 there is a loop: : MALLOC(visited, int, d-tindex); 48796 16.2440 : for (i = 0; i d-tindex; ++i) 94442 31.4394 :visited[i] = 0; There was an effort to replace such loops with calls to builtins - http://gcc.gnu.org/ml/gcc-patches/2007-07/msg00054.html. Ira -- irar at il dot ibm dot com changed: What|Removed |Added CC||irar at il dot ibm dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30442
[Bug middle-end/30442] Expanded array initialization can use memset builtin function
--- Comment #4 from ubizjak at gmail dot com 2008-03-12 11:05 --- This still happens on mainline. I wonder if vectorizer infrastructure can be re-used here to detect unrolled and looped version of memset. In addition to loop that can be vectorized, we have something resembling vectorization of straight code. And looking at comment #3, the rewards from real-world code look really promising. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30442
[Bug middle-end/30442] Expanded array initialization can use memset builtin function
--- Comment #3 from johan dot walles at gmail dot com 2007-11-09 13:09 --- This optimization would have made grep 2.5.3 30% faster in a real-world test case: http://bugs.debian.org/450649 -- johan dot walles at gmail dot com changed: What|Removed |Added CC||johan dot walles at gmail ||dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30442
[Bug middle-end/30442] Expanded array initialization can use memset builtin function
--- Comment #2 from pinskia at gcc dot gnu dot org 2007-01-14 05:01 --- This is a bit complex, we could use a loop reroller to roll this into a loop and then transform that loop into memset for test1. For test2 it is simple and a patch was presented at last year's gcc summit (and I posted an older version of that patch a year or two ago). -- pinskia at gcc dot gnu dot org changed: What|Removed |Added Severity|normal |enhancement Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 GCC build triplet|i686-pc-linux-gnu | GCC host triplet|i686-pc-linux-gnu | GCC target triplet|i686-pc-linux-gnu | Keywords||missed-optimization Last reconfirmed|-00-00 00:00:00 |2007-01-14 05:01:04 date|| Summary|Array initialization can use|Expanded array |memset builtin function |initialization can use ||memset builtin function http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30442