Commit 714fc568 by Richard Biener

re PR tree-optimization/92324 (ICE in expand_direct_optab_fn, at internal-fn.c:2890)

2019-11-08  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/92324
	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use
	STMT_VINFO_REDUC_VECTYPE for all computations, inserting
	sign-conversions as necessary.
	(vectorizable_reduction): Reject conversions in the chain
	that are not sign-conversions, base analysis on a non-converting
	stmt and its operation sign.  Set STMT_VINFO_REDUC_VECTYPE.
	* tree-vect-stmts.c (vect_stmt_relevant_p): Don't dump anything
	for debug stmts.
	* tree-vectorizer.h (_stmt_vec_info::reduc_vectype): New.
	(STMT_VINFO_REDUC_VECTYPE): Likewise.

	* gcc.dg/vect/pr92205.c: XFAIL.
	* gcc.dg/vect/pr92324-1.c: New testcase.
	* gcc.dg/vect/pr92324-2.c: Likewise.

From-SVN: r277958
parent be5f7ecc
/* { dg-do compile } */
unsigned a, b;
int c, d;
unsigned e(int f) {
if (a > f)
return a;
return f;
}
void g() {
for (; c; c++)
d = e(d);
b = d;
}
#include "tree-vect.h"
unsigned b[1024];
int __attribute__((noipa))
foo (int n)
{
int res = 0;
for (int i = 0; i < n; ++i)
res = res > b[i] ? res : b[i];
return res;
}
int main ()
{
check_vect ();
b[15] = (unsigned)__INT_MAX__ + 1;
if (foo (16) != -__INT_MAX__ - 1)
__builtin_abort ();
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment