public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/56918] New: incorrect auto-vectorization of array initialization
@ 2013-04-11 11:04 kretz at kde dot org
2013-04-11 11:42 ` [Bug tree-optimization/56918] [4.8 Regression] " rguenth at gcc dot gnu.org
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: kretz at kde dot org @ 2013-04-11 11:04 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56918
Bug #: 56918
Summary: incorrect auto-vectorization of array initialization
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: kretz@kde.org
Compile the following testcase with "gcc -m32 -O2 -ftree-vectorize -msse2"
int main() {
double data[4];
for (int i = 0; i < 2 * 2; ++i) {
data[i] = ((i + 2) % 3) + 1;
}
if (data[0] != 3.) {
return 1;
}
return 0;
}
The first for-loop calculates the values 6, 7, 8, 9 instead of the expected 3,
1, 2, 3.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug tree-optimization/56918] [4.8 Regression] incorrect auto-vectorization of array initialization
2013-04-11 11:04 [Bug tree-optimization/56918] New: incorrect auto-vectorization of array initialization kretz at kde dot org
@ 2013-04-11 11:42 ` rguenth at gcc dot gnu.org
2013-04-11 11:59 ` rguenth at gcc dot gnu.org
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-04-11 11:42 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56918
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2013-04-11
Known to work| |4.9.0
Target Milestone|--- |4.8.1
Summary|incorrect |[4.8 Regression] incorrect
|auto-vectorization of array |auto-vectorization of array
|initialization |initialization
Ever Confirmed|0 |1
Known to fail| |4.8.0
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> 2013-04-11 11:42:49 UTC ---
extern void abort (void);
double data[4];
int main()
{
int i;
for (i = 0; i < 2 * 2; ++i)
data[i] = ((i + 2) % 3) + 1;
if (data[0] != 3)
abort ();
return 0;
}
Seems to work on trunk.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug tree-optimization/56918] [4.8 Regression] incorrect auto-vectorization of array initialization
2013-04-11 11:04 [Bug tree-optimization/56918] New: incorrect auto-vectorization of array initialization kretz at kde dot org
2013-04-11 11:42 ` [Bug tree-optimization/56918] [4.8 Regression] " rguenth at gcc dot gnu.org
@ 2013-04-11 11:59 ` rguenth at gcc dot gnu.org
2013-04-11 14:43 ` jakub at gcc dot gnu.org
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-04-11 11:59 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56918
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> 2013-04-11 11:59:05 UTC ---
The vectorizer does nothing wrong. The bug goes away with -fdisable-tree-vrp2
which would expose
- stmp_var_.3_2 = 0 + 1;
- stmp_var_.3_19 = stmp_var_.3_2 + 1;
- stmp_var_.3_20 = stmp_var_.3_19 + 1;
- vect_cst_.4_21 = {0, stmp_var_.3_2, stmp_var_.3_19, stmp_var_.3_20};
+ stmp_var_.3_2 = 1;
+ stmp_var_.3_19 = 2;
+ stmp_var_.3_20 = 3;
+ vect_cst_.4_21 = { 0, 1, 2, 3 };
(ick, unfolded 0 + 1)
so we expand
vect_patt.11_29 = { 2, 3, 4, 5 } >> 31;
vect_patt.12_30 = { -1, -1, -1, -1 } - vect_patt.11_29;
vect_patt.13_32 = vect_patt.12_30 * { 3, 3, 3, 3 };
vect_patt.15_33 = { 2, 3, 4, 5 } - vect_patt.13_32;
vect_var_.16_35 = vect_patt.15_33 + { 1, 1, 1, 1 };
vect_var_.18_36 = [vec_unpack_float_lo_expr] vect_var_.16_35;
vect_var_.18_37 = [vec_unpack_float_hi_expr] vect_var_.16_35;
MEM[(double[1024] *)&data] = vect_var_.18_36;
MEM[(double[1024] *)&data + 16B] = vect_var_.18_37;
_10 = data[0];
if (_10 != 3.0e+0)
where I bet that unfolded constant expressions are somehow mis-handled.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug tree-optimization/56918] [4.8 Regression] incorrect auto-vectorization of array initialization
2013-04-11 11:04 [Bug tree-optimization/56918] New: incorrect auto-vectorization of array initialization kretz at kde dot org
2013-04-11 11:42 ` [Bug tree-optimization/56918] [4.8 Regression] " rguenth at gcc dot gnu.org
2013-04-11 11:59 ` rguenth at gcc dot gnu.org
@ 2013-04-11 14:43 ` jakub at gcc dot gnu.org
2013-04-11 15:20 ` jakub at gcc dot gnu.org
2013-04-12 9:13 ` jakub at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-04-11 14:43 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56918
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
AssignedTo|unassigned at gcc dot |jakub at gcc dot gnu.org
|gnu.org |
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-04-11 14:43:30 UTC ---
Created attachment 29858
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29858
gcc49-pr56918.patch
Untested fix.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug tree-optimization/56918] [4.8 Regression] incorrect auto-vectorization of array initialization
2013-04-11 11:04 [Bug tree-optimization/56918] New: incorrect auto-vectorization of array initialization kretz at kde dot org
` (2 preceding siblings ...)
2013-04-11 14:43 ` jakub at gcc dot gnu.org
@ 2013-04-11 15:20 ` jakub at gcc dot gnu.org
2013-04-12 9:13 ` jakub at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-04-11 15:20 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56918
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-04-11 15:20:11 UTC ---
*** Bug 56920 has been marked as a duplicate of this bug. ***
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug tree-optimization/56918] [4.8 Regression] incorrect auto-vectorization of array initialization
2013-04-11 11:04 [Bug tree-optimization/56918] New: incorrect auto-vectorization of array initialization kretz at kde dot org
` (3 preceding siblings ...)
2013-04-11 15:20 ` jakub at gcc dot gnu.org
@ 2013-04-12 9:13 ` jakub at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-04-12 9:13 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56918
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-04-12 09:13:24 UTC ---
Author: jakub
Date: Fri Apr 12 08:18:59 2013
New Revision: 197846
URL: http://gcc.gnu.org/viewcvs?rev=197846&root=gcc&view=rev
Log:
PR tree-optimization/56918
PR tree-optimization/56920
* fold-const.c (int_const_binop_1): Use op1.mul_with_sign (op2, ...)
instead of op1 - op2. Pass 2 * TYPE_PRECISION (type) as second
argument to rshift method. For 2 * HOST_BITS_PER_WIDE_INT precision
use wide_mul_with_sign method.
* gcc.dg/vect/pr56918.c: New test.
* gcc.dg/vect/pr56920.c: New test.
Added:
trunk/gcc/testsuite/gcc.dg/vect/pr56918.c
trunk/gcc/testsuite/gcc.dg/vect/pr56920.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/fold-const.c
trunk/gcc/testsuite/ChangeLog
Author: jakub
Date: Fri Apr 12 08:38:29 2013
New Revision: 197847
URL: http://gcc.gnu.org/viewcvs?rev=197847&root=gcc&view=rev
Log:
PR tree-optimization/56918
PR tree-optimization/56920
* fold-const.c (int_const_binop_1): Use op1.mul_with_sign (op2, ...)
instead of op1 - op2. Pass 2 * TYPE_PRECISION (type) as second
argument to rshift method.
* gcc.dg/vect/pr56918.c: New test.
* gcc.dg/vect/pr56920.c: New test.
Added:
branches/gcc-4_8-branch/gcc/testsuite/gcc.dg/vect/pr56918.c
branches/gcc-4_8-branch/gcc/testsuite/gcc.dg/vect/pr56920.c
Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/fold-const.c
branches/gcc-4_8-branch/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-04-12 9:13 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-04-11 11:04 [Bug tree-optimization/56918] New: incorrect auto-vectorization of array initialization kretz at kde dot org
2013-04-11 11:42 ` [Bug tree-optimization/56918] [4.8 Regression] " rguenth at gcc dot gnu.org
2013-04-11 11:59 ` rguenth at gcc dot gnu.org
2013-04-11 14:43 ` jakub at gcc dot gnu.org
2013-04-11 15:20 ` jakub at gcc dot gnu.org
2013-04-12 9:13 ` jakub at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).