This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/81558] New: Loop not vectorized
- From: "kugan at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 26 Jul 2017 06:03:00 +0000
- Subject: [Bug middle-end/81558] New: Loop not vectorized
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81558
Bug ID: 81558
Summary: Loop not vectorized
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: kugan at gcc dot gnu.org
Target Milestone: ---
For the testcase:
struct I
{
int opix_x;
int opix_y;
};
//#define R
#define R __restrict__
extern struct I * R img;
extern unsigned short ** R imgY_org;
extern unsigned short orig_blocks[256];
void foo1 (int n)
{
int x = 1, y = 1;
unsigned short *orgptr=orig_blocks;
// Vectorized
for (y = 0; y < img->opix_y; y++)
for (x = 0; x < img->opix_x; x++)
*orgptr++ = imgY_org [y][x];
}
void foo2 (int n)
{
int x = 1, y = 1;
unsigned short *orgptr=orig_blocks;
// Not vectorized
for (y = img->opix_y; y < img->opix_y+16; y++)
for (x = img->opix_x; x < img->opix_x+16; x++)
*orgptr++ = imgY_org [y][x];
}
Loop in foo2 is not vectorized.
In the *.156t.vect, I see:
Creating dr for *_40
analyze_innermost: failed: evolution of base is not affine.
base_address:
offset from base address:
constant offset from base address:
step:
aligned to:
base_object: *_40
LLVM seems to be able to vectorize this.