[Bug tree-optimization/56625] New: After if-conversion vectorizer doesn't recognize similar stores
michael.v.zolotukhin at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Mar 15 12:18:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56625
Bug #: 56625
Summary: After if-conversion vectorizer doesn't recognize
similar stores
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: michael.v.zolotukhin@gmail.com
CC: kirill.yukhin@intel.com,
michael.v.zolotukhin@gmail.com
Build: 4.8.0 20130313
Created attachment 29673
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29673
Reproducer
In the following example there are two stores a[i]<-b[i] after if-conversion.
void foo (double a[], double b[])
{
int i;
for (i = 0; i < 100; i++)
{
if (a[i] == 0)
a[i] = b[i]*4;
else
a[i] = b[i]*3;
}
}
As vectorizer knows nothing about dependencies between a and b, it needs a
runtime test for it. But in the given example, vectorizer generates two
runtime-tests instead of one:
note: mark for run-time aliasing test between *_11 and *_8
note: mark for run-time aliasing test between *_15 and *_8
The test is attached, command line to reproduce:
gcc if-conv-runtime-tests.c -O3 -c -ftree-vectorizer-verbose=15
-ftree-loop-if-convert-stores -fdump-tree-vect
More information about the Gcc-bugs
mailing list