re PR tree-optimization/80705 (Incorrect code generated for profile counter updates due to SLP+LIM)
2017-05-11 Richard Biener <rguenther@suse.de> PR tree-optimization/80705 * tree-vect-data-refs.c (vect_analyze_data_refs): DECL_NONALIASED bases are not vectorizable. * gcc.dg/vect/bb-slp-pr80705.c: New testcase. From-SVN: r247906
This commit is contained in:
parent
f8cba3aaae
commit
43b883a990
4 changed files with 76 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2017-05-11 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/80705
|
||||
* tree-vect-data-refs.c (vect_analyze_data_refs): DECL_NONALIASED
|
||||
bases are not vectorizable.
|
||||
|
||||
2017-05-11 Bin Cheng <bin.cheng@arm.com>
|
||||
|
||||
* tree-ssa-loop-ivopts.c (determine_set_costs): Skip non-interger
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2017-05-11 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/80705
|
||||
* gcc.dg/vect/bb-slp-pr80705.c: New testcase.
|
||||
|
||||
2017-05-11 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
* lib/scanlang.exp: New.
|
||||
|
|
44
gcc/testsuite/gcc.dg/vect/bb-slp-pr80705.c
Normal file
44
gcc/testsuite/gcc.dg/vect/bb-slp-pr80705.c
Normal file
|
@ -0,0 +1,44 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-require-profiling "-fprofile-generate" } */
|
||||
/* { dg-additional-options "-fprofile-generate" } */
|
||||
|
||||
extern int isspace (int);
|
||||
|
||||
int foo(const char *txt, char *buf)
|
||||
{
|
||||
const char *s;
|
||||
char *d;
|
||||
int ws = 1;
|
||||
for (s=txt, d=buf; *s; )
|
||||
{
|
||||
if (*s=='/' && *(s+1)=='/') {
|
||||
|
||||
s += 2;
|
||||
while (*s && *s!='\r' && *s!='\n')
|
||||
s++;
|
||||
}
|
||||
else if (*s=='"') {
|
||||
|
||||
s++;
|
||||
while (*s && *s!='\r' && *s!='\n' && *s!='"')
|
||||
if (*s++=='\\')
|
||||
s++;
|
||||
if (*s=='"')
|
||||
s++;
|
||||
}
|
||||
else {
|
||||
if (*s && !isspace(*s))
|
||||
ws = 0;
|
||||
|
||||
|
||||
*d++ = *s++;
|
||||
|
||||
}
|
||||
}
|
||||
*d = '\0';
|
||||
|
||||
return ws;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump "base object not addressable" "slp1" } } */
|
||||
/* { dg-final { scan-tree-dump-not "MEM\[^\r\n\]*__gcov\[^\r\n\]* = vect_cst" "slp1" } } */
|
|
@ -3957,6 +3957,27 @@ again:
|
|||
datarefs[i] = dr;
|
||||
}
|
||||
|
||||
if (TREE_CODE (DR_BASE_ADDRESS (dr)) == ADDR_EXPR
|
||||
&& VAR_P (TREE_OPERAND (DR_BASE_ADDRESS (dr), 0))
|
||||
&& DECL_NONALIASED (TREE_OPERAND (DR_BASE_ADDRESS (dr), 0)))
|
||||
{
|
||||
if (dump_enabled_p ())
|
||||
{
|
||||
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
|
||||
"not vectorized: base object not addressable "
|
||||
"for stmt: ");
|
||||
dump_gimple_stmt (MSG_MISSED_OPTIMIZATION, TDF_SLIM, stmt, 0);
|
||||
}
|
||||
if (is_a <bb_vec_info> (vinfo))
|
||||
{
|
||||
/* In BB vectorization the ref can still participate
|
||||
in dependence analysis, we just can't vectorize it. */
|
||||
STMT_VINFO_VECTORIZABLE (stmt_info) = false;
|
||||
continue;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Set vectype for STMT. */
|
||||
scalar_type = TREE_TYPE (DR_REF (dr));
|
||||
STMT_VINFO_VECTYPE (stmt_info)
|
||||
|
|
Loading…
Add table
Reference in a new issue