mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 23:00:52 +08:00
vect: Fix ICE in vectorizable_comparison PR93292
The following testcase ICEs on powerpc64le-linux. The problem is that get_vectype_for_scalar_type returns NULL, and while most places in tree-vect-stmts.c handle that case, this spot doesn't and punts only if it is non-NULL, but with different number of elts than expected. 2020-01-17 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/93292 * tree-vect-stmts.c (vectorizable_comparison): Punt also if get_vectype_for_scalar_type returns NULL. * g++.dg/opt/pr93292.C: New test.
This commit is contained in:
parent
40111910b0
commit
dc9ba9d045
@ -1,3 +1,9 @@
|
||||
2020-01-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/93292
|
||||
* tree-vect-stmts.c (vectorizable_comparison): Punt also if
|
||||
get_vectype_for_scalar_type returns NULL.
|
||||
|
||||
2020-01-16 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
* params.opt (-param=max-predicted-iterations): Increase range from 0.
|
||||
|
@ -1,5 +1,8 @@
|
||||
2020-01-17 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/93292
|
||||
* g++.dg/opt/pr93292.C: New test.
|
||||
|
||||
PR testsuite/93294
|
||||
* lib/c-compat.exp (compat-use-alt-compiler): Handle
|
||||
-fdiagnostics-urls=never similarly to -fdiagnostics-color=never.
|
||||
|
18
gcc/testsuite/g++.dg/opt/pr93292.C
Normal file
18
gcc/testsuite/g++.dg/opt/pr93292.C
Normal file
@ -0,0 +1,18 @@
|
||||
// PR tree-optimization/93292
|
||||
// { dg-do compile }
|
||||
// { dg-options "-O3 -w" }
|
||||
|
||||
struct A {
|
||||
static int foo (float x) { static int b; b = x ? x + 0.5 : 0; return b; }
|
||||
};
|
||||
|
||||
void
|
||||
bar (int *d, float e)
|
||||
{
|
||||
float g;
|
||||
for (int h = 0; h < 64; h++)
|
||||
{
|
||||
d[h] += A::foo (g < 0 ? : g > 5 ? : g);
|
||||
A::foo (e);
|
||||
}
|
||||
}
|
@ -10492,7 +10492,7 @@ vectorizable_comparison (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
|
||||
{
|
||||
vectype = get_vectype_for_scalar_type (vinfo, TREE_TYPE (rhs1),
|
||||
slp_node);
|
||||
if (maybe_ne (TYPE_VECTOR_SUBPARTS (vectype), nunits))
|
||||
if (!vectype || maybe_ne (TYPE_VECTOR_SUBPARTS (vectype), nunits))
|
||||
return false;
|
||||
}
|
||||
else if (maybe_ne (nunits, TYPE_VECTOR_SUBPARTS (vectype)))
|
||||
|
Loading…
x
Reference in New Issue
Block a user