[Bug middle-end/30442] Expanded array initialization can use memset builtin function

2012-06-05 Thread rguenth at gcc dot gnu.org
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

2012-06-05 Thread rguenth at gcc dot gnu.org
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

2012-06-05 Thread rguenth at gcc dot gnu.org
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

2012-02-06 Thread ubizjak at gmail dot com
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

2008-03-13 Thread irar at il dot ibm dot com


--- 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

2008-03-12 Thread ubizjak at gmail dot com


--- 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

2007-11-09 Thread johan dot walles at gmail dot com


--- 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

2007-01-13 Thread pinskia at gcc dot gnu dot org


--- 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