mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-25 19:11:21 +08:00
re PR tree-optimization/46213 (gfortran.dg/aliasing_array_result_1.f90 ICE: in vectorizable_reduction, at tree-vect-loop.c:4046 with custom compiler flags)
PR tree-optimization/46213 * tree-vect-loop.c (vect_is_simple_reduction_1): Handle MINUS_EXPR only if the first operand is reduction operand. From-SVN: r166306
This commit is contained in:
parent
e4d8d4ea19
commit
0532869d05
@ -1,3 +1,9 @@
|
||||
2010-11-04 Ira Rosen <irar@il.ibm.com>
|
||||
|
||||
PR tree-optimization/46213
|
||||
* tree-vect-loop.c (vect_is_simple_reduction_1): Handle
|
||||
MINUS_EXPR only if the first operand is reduction operand.
|
||||
|
||||
2010-11-04 Richard Guenther <rguenther@suse.de>
|
||||
Richard Henderson <rth@redhat.com>
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
2010-11-04 Ira Rosen <irar@il.ibm.com>
|
||||
|
||||
PR tree-optimization/46213
|
||||
* gfortran.dg/vect/pr46213.f90: New.
|
||||
|
||||
2010-11-04 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR testsuite/45702
|
||||
|
25
gcc/testsuite/gfortran.dg/vect/pr46213.f90
Normal file
25
gcc/testsuite/gfortran.dg/vect/pr46213.f90
Normal file
@ -0,0 +1,25 @@
|
||||
! { dg-do compile }
|
||||
! { dg-options "-O -fno-tree-loop-ivcanon -ftree-vectorize -fno-tree-ccp -fno-tree-ch -finline-small-functions" }
|
||||
|
||||
module foo
|
||||
INTEGER, PARAMETER :: ONE = 1
|
||||
end module foo
|
||||
program test
|
||||
use foo
|
||||
integer :: a(ONE), b(ONE), c(ONE), d(ONE)
|
||||
interface
|
||||
function h_ext()
|
||||
end function h_ext
|
||||
end interface
|
||||
c = j()
|
||||
if (any (c .ne. check)) call myabort (7)
|
||||
contains
|
||||
function j()
|
||||
integer :: j(ONE), cc(ONE)
|
||||
j = cc - j
|
||||
end function j
|
||||
function get_d()
|
||||
end function get_d
|
||||
end program test
|
||||
|
||||
! { dg-final { cleanup-tree-dump "vect" } }
|
@ -1800,7 +1800,11 @@ vect_is_simple_reduction_1 (loop_vec_info loop_info, gimple phi,
|
||||
simply rewriting this into "res += -x[i]". Avoid changing
|
||||
gimple instruction for the first simple tests and only do this
|
||||
if we're allowed to change code at all. */
|
||||
if (code == MINUS_EXPR && modify)
|
||||
if (code == MINUS_EXPR
|
||||
&& modify
|
||||
&& (op1 = gimple_assign_rhs1 (def_stmt))
|
||||
&& TREE_CODE (op1) == SSA_NAME
|
||||
&& SSA_NAME_DEF_STMT (op1) == phi)
|
||||
code = PLUS_EXPR;
|
||||
|
||||
if (check_reduction
|
||||
|
Loading…
x
Reference in New Issue
Block a user