This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Question about vectorization limit
- From: Toon Moene <toon at moene dot org>
- To: Richard Biener <richard dot guenther at gmail dot com>
- Cc: Dehao Chen <dehao at google dot com>, GCC Development <gcc at gcc dot gnu dot org>
- Date: Fri, 31 May 2013 15:21:51 +0200
- Subject: Re: Question about vectorization limit
- References: <CAO2gOZX7_-08m_+AEybF0RwG=8Y_qPG_+wjmgsq6ymVWTr3=Vw at mail dot gmail dot com> <CAFiYyc3ehiZeyrXUb+wgj_tBi7WqmeHNQdFK9vDinnMWYHYswA at mail dot gmail dot com>
On 05/31/2013 10:20 AM, Richard Biener wrote:
So - I doubt that you both do not get any ICEs and more performance.
I added the second suggested patch:
Index: tree-vect-loop-manip.c
===================================================================
--- tree-vect-loop-manip.c (revision 199454)
+++ tree-vect-loop-manip.c (working copy)
@@ -985,7 +985,7 @@
/* All loops have an outer scope; the only case loop->outer is
NULL is for
the function itself. */
|| !loop_outer (loop)
- || loop->num_nodes != 2
+/* || loop->num_nodes != 2 */
|| !empty_block_p (loop->latch)
|| !single_exit (loop)
/* Verify that new loop exit condition can be trivially
modified. */
And I still get no ICE sicking 3.5 million lines of Fortran on this
compiler. This is pretty suspicious - it might well be that checks
further down will prohibit vectorization to do anything on loops like
SUBROUTINE XYZ(A, B, N)
DIMENSION A(N), B(N)
DO I = 1, N
IF (A(I) > 0.0) THEN
A(I) = B(I) / A(I)
ELSE
A(I) = B(I)
ENDIF
ENDDO
END
--
Toon Moene - e-mail: toon@moene.org - phone: +31 346 214290
Saturnushof 14, 3738 XG Maartensdijk, The Netherlands
At home: http://moene.org/~toon/; weather: http://moene.org/~hirlam/
Progress of GNU Fortran: http://gcc.gnu.org/wiki/GFortran#news