re PR tree-optimization/85934 (ICE: verify_gimple failed (error: type mismatch in vector pack expression))
2018-05-28 Richard Biener <rguenther@suse.de> PR tree-optimization/85934 * tree-vect-generic.c (expand_vector_operations_1): Hoist vector boolean check before scalar optimization. * gcc.target/i386/pr85934.c: New testcase. From-SVN: r260847
This commit is contained in:
parent
533aa46a86
commit
b29502e735
3 changed files with 31 additions and 6 deletions
|
@ -1,3 +1,8 @@
|
|||
2018-05-28 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/85934
|
||||
* gcc.target/i386/pr85934.c: New testcase.
|
||||
|
||||
2018-05-28 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/renaming12.adb, gnat.dg/renaming12.ads: New testcase.
|
||||
|
|
20
gcc/testsuite/gcc.target/i386/pr85934.c
Normal file
20
gcc/testsuite/gcc.target/i386/pr85934.c
Normal file
|
@ -0,0 +1,20 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O -ftree-loop-vectorize -mavx512vbmi" } */
|
||||
|
||||
int uf;
|
||||
|
||||
int
|
||||
l7 (int wk, int sv)
|
||||
{
|
||||
while (sv < 1)
|
||||
{
|
||||
int me;
|
||||
|
||||
for (me = 0; me < 64; ++me)
|
||||
wk += !!((unsigned char) sv) && (!!uf == !!me);
|
||||
|
||||
++sv;
|
||||
}
|
||||
|
||||
return wk;
|
||||
}
|
|
@ -1612,6 +1612,12 @@ expand_vector_operations_1 (gimple_stmt_iterator *gsi)
|
|||
if (!VECTOR_TYPE_P (type)
|
||||
|| !VECTOR_TYPE_P (TREE_TYPE (rhs1)))
|
||||
return;
|
||||
|
||||
/* A scalar operation pretending to be a vector one. */
|
||||
if (VECTOR_BOOLEAN_TYPE_P (type)
|
||||
&& !VECTOR_MODE_P (TYPE_MODE (type))
|
||||
&& TYPE_MODE (type) != BLKmode)
|
||||
return;
|
||||
|
||||
/* If the vector operation is operating on all same vector elements
|
||||
implement it with a scalar operation and a splat if the target
|
||||
|
@ -1638,12 +1644,6 @@ expand_vector_operations_1 (gimple_stmt_iterator *gsi)
|
|||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* A scalar operation pretending to be a vector one. */
|
||||
if (VECTOR_BOOLEAN_TYPE_P (type)
|
||||
&& !VECTOR_MODE_P (TYPE_MODE (type))
|
||||
&& TYPE_MODE (type) != BLKmode)
|
||||
return;
|
||||
|
||||
if (CONVERT_EXPR_CODE_P (code)
|
||||
|| code == FLOAT_EXPR
|
||||
|
|
Loading…
Add table
Reference in a new issue