* [Bug tree-optimization/49093] [4.6/4.7 Regression] ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop
2011-05-20 19:08 [Bug tree-optimization/49093] New: ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop arthur.j.odwyer at gmail dot com
@ 2011-05-21 9:54 ` rguenth at gcc dot gnu.org
2011-05-21 16:53 ` hjl.tools at gmail dot com
` (10 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: rguenth at gcc dot gnu.org @ 2011-05-21 9:54 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49093
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2011.05.21 09:40:47
Target Milestone|--- |4.6.1
Summary|ICE in |[4.6/4.7 Regression] ICE in
|vect_enhance_data_refs_alig |vect_enhance_data_refs_alig
|nment() with volatile |nment() with volatile
|inside peeled loop |inside peeled loop
Ever Confirmed|0 |1
Known to fail| |4.6.0
--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-05-21 09:40:47 UTC ---
Confirmed.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/49093] [4.6/4.7 Regression] ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop
2011-05-20 19:08 [Bug tree-optimization/49093] New: ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop arthur.j.odwyer at gmail dot com
2011-05-21 9:54 ` [Bug tree-optimization/49093] [4.6/4.7 Regression] " rguenth at gcc dot gnu.org
@ 2011-05-21 16:53 ` hjl.tools at gmail dot com
2011-05-31 7:42 ` irar at il dot ibm.com
` (9 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: hjl.tools at gmail dot com @ 2011-05-21 16:53 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49093
H.J. Lu <hjl.tools at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rguenth at gcc dot gnu.org
--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> 2011-05-21 14:44:23 UTC ---
It is caused by revision 166244:
http://gcc.gnu.org/ml/gcc-cvs/2010-11/msg00130.html
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/49093] [4.6/4.7 Regression] ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop
2011-05-20 19:08 [Bug tree-optimization/49093] New: ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop arthur.j.odwyer at gmail dot com
2011-05-21 9:54 ` [Bug tree-optimization/49093] [4.6/4.7 Regression] " rguenth at gcc dot gnu.org
2011-05-21 16:53 ` hjl.tools at gmail dot com
@ 2011-05-31 7:42 ` irar at il dot ibm.com
2011-05-31 8:31 ` rguenther at suse dot de
` (8 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: irar at il dot ibm.com @ 2011-05-31 7:42 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49093
Ira Rosen <irar at il dot ibm.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |irar at il dot ibm.com
--- Comment #3 from Ira Rosen <irar at il dot ibm.com> 2011-05-31 07:31:02 UTC ---
The problem here is that
vol.2_8 ={v} g_324[g_97_22];
is skipped during determination of the vectorization factor, because it has no
uses. The vf is set to 4, and then the analysis fails on the char data-ref.
I think we should just not vectorize when there is a volatile access in a loop.
Is that reasonable?
Thanks,
Ira
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/49093] [4.6/4.7 Regression] ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop
2011-05-20 19:08 [Bug tree-optimization/49093] New: ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop arthur.j.odwyer at gmail dot com
` (2 preceding siblings ...)
2011-05-31 7:42 ` irar at il dot ibm.com
@ 2011-05-31 8:31 ` rguenther at suse dot de
2011-05-31 8:36 ` irar at il dot ibm.com
` (7 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: rguenther at suse dot de @ 2011-05-31 8:31 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49093
--- Comment #4 from rguenther at suse dot de <rguenther at suse dot de> 2011-05-31 08:22:51 UTC ---
On Tue, 31 May 2011, irar at il dot ibm.com wrote:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49093
>
> Ira Rosen <irar at il dot ibm.com> changed:
>
> What |Removed |Added
> ----------------------------------------------------------------------------
> CC| |irar at il dot ibm.com
>
> --- Comment #3 from Ira Rosen <irar at il dot ibm.com> 2011-05-31 07:31:02 UTC ---
> The problem here is that
> vol.2_8 ={v} g_324[g_97_22];
> is skipped during determination of the vectorization factor, because it has no
> uses. The vf is set to 4, and then the analysis fails on the char data-ref.
>
> I think we should just not vectorize when there is a volatile access in a loop.
> Is that reasonable?
I think that's reasonable for 4.6. But we don't need to make
data-ref analysis fail just because of volatile references - we for
example can easily unroll a loop with volatile loads/stores.
Of course this case seems to be special - how do we deal with
stmts with no uses during vectorization? Or do we assume
they don't happen because usually DCE gets rid of them?
Richard.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/49093] [4.6/4.7 Regression] ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop
2011-05-20 19:08 [Bug tree-optimization/49093] New: ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop arthur.j.odwyer at gmail dot com
` (3 preceding siblings ...)
2011-05-31 8:31 ` rguenther at suse dot de
@ 2011-05-31 8:36 ` irar at il dot ibm.com
2011-05-31 8:54 ` rguenther at suse dot de
` (6 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: irar at il dot ibm.com @ 2011-05-31 8:36 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49093
--- Comment #5 from Ira Rosen <irar at il dot ibm.com> 2011-05-31 08:30:49 UTC ---
(In reply to comment #4)
> I think that's reasonable for 4.6. But we don't need to make
> data-ref analysis fail just because of volatile references - we for
> example can easily unroll a loop with volatile loads/stores.
>
> Of course this case seems to be special - how do we deal with
> stmts with no uses during vectorization? Or do we assume
> they don't happen because usually DCE gets rid of them?
We ignore them. But this is under the assumption that they don't have memory
accesses.
Ira
>
> Richard.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/49093] [4.6/4.7 Regression] ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop
2011-05-20 19:08 [Bug tree-optimization/49093] New: ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop arthur.j.odwyer at gmail dot com
` (4 preceding siblings ...)
2011-05-31 8:36 ` irar at il dot ibm.com
@ 2011-05-31 8:54 ` rguenther at suse dot de
2011-05-31 9:10 ` irar at il dot ibm.com
` (5 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: rguenther at suse dot de @ 2011-05-31 8:54 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49093
--- Comment #6 from rguenther at suse dot de <rguenther at suse dot de> 2011-05-31 08:43:39 UTC ---
On Tue, 31 May 2011, irar at il dot ibm.com wrote:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49093
>
> --- Comment #5 from Ira Rosen <irar at il dot ibm.com> 2011-05-31 08:30:49 UTC ---
> (In reply to comment #4)
>
> > I think that's reasonable for 4.6. But we don't need to make
> > data-ref analysis fail just because of volatile references - we for
> > example can easily unroll a loop with volatile loads/stores.
> >
> > Of course this case seems to be special - how do we deal with
> > stmts with no uses during vectorization? Or do we assume
> > they don't happen because usually DCE gets rid of them?
>
> We ignore them. But this is under the assumption that they don't have memory
> accesses.
Ah, I see. Yes, I guess not vectorizing for volatiles is the way
to go then.
Richard.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/49093] [4.6/4.7 Regression] ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop
2011-05-20 19:08 [Bug tree-optimization/49093] New: ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop arthur.j.odwyer at gmail dot com
` (5 preceding siblings ...)
2011-05-31 8:54 ` rguenther at suse dot de
@ 2011-05-31 9:10 ` irar at il dot ibm.com
2011-05-31 9:18 ` rguenther at suse dot de
` (4 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: irar at il dot ibm.com @ 2011-05-31 9:10 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49093
--- Comment #7 from Ira Rosen <irar at il dot ibm.com> 2011-05-31 09:06:04 UTC ---
I am testing this patch then:
Index: tree-vect-data-refs.c
===================================================================
--- tree-vect-data-refs.c (revision 174467)
+++ tree-vect-data-refs.c (working copy)
@@ -2584,6 +2584,16 @@ vect_analyze_data_refs (loop_vec_info lo
return false;
}
+ if (TYPE_VOLATILE (TREE_TYPE (DR_REF (dr))))
+ {
+ if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
+ {
+ fprintf (vect_dump, "not vectorized: volatile type ");
+ print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
+ }
+ return false;
+ }
+
base = unshare_expr (DR_BASE_ADDRESS (dr));
offset = unshare_expr (DR_OFFSET (dr));
init = unshare_expr (DR_INIT (dr));
Thanks,
Ira
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/49093] [4.6/4.7 Regression] ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop
2011-05-20 19:08 [Bug tree-optimization/49093] New: ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop arthur.j.odwyer at gmail dot com
` (6 preceding siblings ...)
2011-05-31 9:10 ` irar at il dot ibm.com
@ 2011-05-31 9:18 ` rguenther at suse dot de
2011-05-31 9:24 ` irar at il dot ibm.com
` (3 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: rguenther at suse dot de @ 2011-05-31 9:18 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49093
--- Comment #8 from rguenther at suse dot de <rguenther at suse dot de> 2011-05-31 09:09:37 UTC ---
On Tue, 31 May 2011, irar at il dot ibm.com wrote:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49093
>
> --- Comment #7 from Ira Rosen <irar at il dot ibm.com> 2011-05-31 09:06:04 UTC ---
> I am testing this patch then:
>
> Index: tree-vect-data-refs.c
> ===================================================================
> --- tree-vect-data-refs.c (revision 174467)
> +++ tree-vect-data-refs.c (working copy)
> @@ -2584,6 +2584,16 @@ vect_analyze_data_refs (loop_vec_info lo
> return false;
> }
>
> + if (TYPE_VOLATILE (TREE_TYPE (DR_REF (dr))))
if (TREE_THIS_VOLATILE (DR_REF (dr)))
instead.
Richard.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/49093] [4.6/4.7 Regression] ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop
2011-05-20 19:08 [Bug tree-optimization/49093] New: ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop arthur.j.odwyer at gmail dot com
` (7 preceding siblings ...)
2011-05-31 9:18 ` rguenther at suse dot de
@ 2011-05-31 9:24 ` irar at il dot ibm.com
2011-05-31 12:46 ` irar at gcc dot gnu.org
` (2 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: irar at il dot ibm.com @ 2011-05-31 9:24 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49093
--- Comment #9 from Ira Rosen <irar at il dot ibm.com> 2011-05-31 09:17:26 UTC ---
(In reply to comment #8)
> >
> > + if (TYPE_VOLATILE (TREE_TYPE (DR_REF (dr))))
>
> if (TREE_THIS_VOLATILE (DR_REF (dr)))
>
> instead.
>
OK. Thanks.
Ira
> Richard.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/49093] [4.6/4.7 Regression] ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop
2011-05-20 19:08 [Bug tree-optimization/49093] New: ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop arthur.j.odwyer at gmail dot com
` (8 preceding siblings ...)
2011-05-31 9:24 ` irar at il dot ibm.com
@ 2011-05-31 12:46 ` irar at gcc dot gnu.org
2011-06-02 7:03 ` irar at gcc dot gnu.org
2011-06-02 7:12 ` irar at il dot ibm.com
11 siblings, 0 replies; 13+ messages in thread
From: irar at gcc dot gnu.org @ 2011-05-31 12:46 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49093
--- Comment #10 from irar at gcc dot gnu.org 2011-05-31 12:31:09 UTC ---
Author: irar
Date: Tue May 31 12:31:04 2011
New Revision: 174477
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=174477
Log:
PR tree-optimization/49093
* tree-vect-data-refs.c (vect_analyze_data_refs): Fail for
volatile data references.
Added:
trunk/gcc/testsuite/gcc.dg/vect/pr49093.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-vect-data-refs.c
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/49093] [4.6/4.7 Regression] ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop
2011-05-20 19:08 [Bug tree-optimization/49093] New: ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop arthur.j.odwyer at gmail dot com
` (9 preceding siblings ...)
2011-05-31 12:46 ` irar at gcc dot gnu.org
@ 2011-06-02 7:03 ` irar at gcc dot gnu.org
2011-06-02 7:12 ` irar at il dot ibm.com
11 siblings, 0 replies; 13+ messages in thread
From: irar at gcc dot gnu.org @ 2011-06-02 7:03 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49093
--- Comment #11 from irar at gcc dot gnu.org 2011-06-02 07:03:04 UTC ---
Author: irar
Date: Thu Jun 2 07:02:57 2011
New Revision: 174559
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=174559
Log:
PR tree-optimization/49093
* tree-vect-data-refs.c (vect_analyze_data_refs): Fail for
volatile data references.
Added:
branches/gcc-4_6-branch/gcc/testsuite/gcc.dg/vect/pr49093.c
Modified:
branches/gcc-4_6-branch/gcc/ChangeLog
branches/gcc-4_6-branch/gcc/testsuite/ChangeLog
branches/gcc-4_6-branch/gcc/tree-vect-data-refs.c
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug tree-optimization/49093] [4.6/4.7 Regression] ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop
2011-05-20 19:08 [Bug tree-optimization/49093] New: ICE in vect_enhance_data_refs_alignment() with volatile inside peeled loop arthur.j.odwyer at gmail dot com
` (10 preceding siblings ...)
2011-06-02 7:03 ` irar at gcc dot gnu.org
@ 2011-06-02 7:12 ` irar at il dot ibm.com
11 siblings, 0 replies; 13+ messages in thread
From: irar at il dot ibm.com @ 2011-06-02 7:12 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49093
Ira Rosen <irar at il dot ibm.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
--- Comment #12 from Ira Rosen <irar at il dot ibm.com> 2011-06-02 07:11:29 UTC ---
Fixed.
^ permalink raw reply [flat|nested] 13+ messages in thread