re PR tree-optimization/54889 (Revision 191983 gives compfail for 465.tonto in SPEC CPU 2006 when use -O3 -mavx)
PR tree-optimization/54889 * tree-vect-stmts.c (vectorizable_load): Add VIEW_CONVERT_EXPR if ARRAY_REF newref doesn't have compatible type with vectype element type, use vectype element type for MEM_REF. * gfortran.dg/pr54889.f90: New test. From-SVN: r192493
This commit is contained in:
parent
c7fb4c7aae
commit
cded4e9ed7
4 changed files with 33 additions and 5 deletions
|
@ -1,3 +1,10 @@
|
|||
2012-10-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/54889
|
||||
* tree-vect-stmts.c (vectorizable_load): Add VIEW_CONVERT_EXPR if
|
||||
ARRAY_REF newref doesn't have compatible type with vectype element
|
||||
type, use vectype element type for MEM_REF.
|
||||
|
||||
2012-10-16 Steven Bosscher <steven@gcc.gnu.org>
|
||||
|
||||
* combine.c (record_dead_and_set_regs): Iterate over hard register set
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2012-10-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/54889
|
||||
* gfortran.dg/pr54889.f90: New test.
|
||||
|
||||
2012-10-16 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* g++.dg/other/dump-ada-spec-2.C: New test.
|
||||
|
|
10
gcc/testsuite/gfortran.dg/pr54889.f90
Normal file
10
gcc/testsuite/gfortran.dg/pr54889.f90
Normal file
|
@ -0,0 +1,10 @@
|
|||
! PR tree-optimization/54889
|
||||
! { dg-do compile }
|
||||
! { dg-options "-O3" }
|
||||
! { dg-additional-options "-mavx" { target { i?86-*-* x86_64-*-* } } }
|
||||
|
||||
subroutine foo(x,y,z)
|
||||
logical, pointer :: x(:,:)
|
||||
integer :: y, z
|
||||
x=x(1:y,1:z)
|
||||
end subroutine
|
|
@ -4743,12 +4743,18 @@ vectorizable_load (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt,
|
|||
tree newref, newoff;
|
||||
gimple incr;
|
||||
if (TREE_CODE (ref) == ARRAY_REF)
|
||||
newref = build4 (ARRAY_REF, TREE_TYPE (ref),
|
||||
unshare_expr (TREE_OPERAND (ref, 0)),
|
||||
running_off,
|
||||
NULL_TREE, NULL_TREE);
|
||||
{
|
||||
newref = build4 (ARRAY_REF, TREE_TYPE (ref),
|
||||
unshare_expr (TREE_OPERAND (ref, 0)),
|
||||
running_off,
|
||||
NULL_TREE, NULL_TREE);
|
||||
if (!useless_type_conversion_p (TREE_TYPE (vectype),
|
||||
TREE_TYPE (newref)))
|
||||
newref = build1 (VIEW_CONVERT_EXPR, TREE_TYPE (vectype),
|
||||
newref);
|
||||
}
|
||||
else
|
||||
newref = build2 (MEM_REF, TREE_TYPE (ref),
|
||||
newref = build2 (MEM_REF, TREE_TYPE (vectype),
|
||||
running_off,
|
||||
TREE_OPERAND (ref, 1));
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue