This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/63844] [4.8/4.9/5 Regression] open mp parallelization prevents vectorization
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 18 Nov 2014 10:59:23 +0000
- Subject: [Bug tree-optimization/63844] [4.8/4.9/5 Regression] open mp parallelization prevents vectorization
- Auto-submitted: auto-generated
- References: <bug-63844-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63844
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|jakub at gcc dot gnu.org |rguenth at gcc dot gnu.org
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
The issue here is the induction variable is shared?
<bb 5>:
# _17 = PHI <0(2), _11(4)>
_6 = b[_17];
_7 = c[_17];
_8 = _6 + _7;
a[_17] = _8;
_10 = .omp_data_i_3(D)->i;
_11 = _10 + 1;
.omp_data_i_3(D)->i = _11;
if (_11 <= 9999999)
goto <bb 4>;
else
goto <bb 3>;
and we didn't apply store-motion to it:
Memory reference 1: b[_17]
Memory reference 2: c[_17]
Memory reference 3: a[_17]
Memory reference 4: .omp_data_i_3(D)->i
...
Querying dependency of refs 4 and 1: dependent.
Querying dependencies of ref 4 in loop 1: dependent
I think the static chain never points to global decls thus we could
special-case this. We could also treat members of the frame as
non-allocated and thus not worry about trailing arrays and such.
Unfortunately the .omp_data_i is a regular function parameter and
not a static chain :/