[Bug tree-optimization/56688] New: Fortran save statement prevents loop vectorization.
ysrumyan at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri Mar 22 10:49:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56688
Bug #: 56688
Summary: Fortran save statement prevents loop vectorization.
Classification: Unclassified
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: ysrumyan@gmail.com
Analyzing gcc vectorization on 200.sixtrack from spec2000 suite we found out
that only 6 loops are vectorized in the hottest routine (97% run time). The
reason is that save statement is used. This issue can be illustrated by the
following simple example:
subroutine bar
implicit real*8 (a-h,o-z)
parameter (n=700)
common/my_data/ x1(n), y1(n), z1(n), t1(n)
save
do i=1,n
x = x1(i) - y1(i)
z1(i) = t1(i) * x
enddo
end
and vectorizer issues the following message:
t1.f:6: note: ==> examining statement: _6 = my_data.x1[_5];
t1.f:6: note: num. args = 4 (not unary/binary/ternary op).
t1.f:6: note: vect_is_simple_use: operand my_data.x1[_5]
t1.f:6: note: not ssa-name.
t1.f:6: note: use not simple.
t1.f:6: note: vect_model_load_cost: aligned.
t1.f:6: note: vect_model_load_cost: inside_cost = 1, prologue_cost = 0 .
t1.f:6: note: vect_is_simple_use: operand my_data.x1
t1.f:6: note: not ssa-name.
t1.f:6: note: use not simple.
t1.f:6: note: not vectorized: live stmt not supported: _6 = my_data.x1[_5];
Note also if we comment down svae stmt loop will be vectorized.
More information about the Gcc-bugs
mailing list