re PR tree-optimization/87465 (Loop removal regression)
2018-10-01 Richard Biener <rguenther@suse.de> PR tree-optimization/87465 * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Fix typo causing branch miscounts. * gcc.dg/tree-ssa/cunroll-15.c: New testcase. From-SVN: r264758
This commit is contained in:
parent
329130cc40
commit
fd5c626c68
@ -1,3 +1,9 @@
|
||||
2018-10-01 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/87465
|
||||
* tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Fix typo
|
||||
causing branch miscounts.
|
||||
|
||||
2018-10-01 Tamar Christina <tamar.christina@arm.com>
|
||||
|
||||
* common/config/aarch64/aarch64-common.c (TARGET_OPTION_DEFAULT_PARAM,
|
||||
|
@ -1,3 +1,8 @@
|
||||
2018-10-01 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/87465
|
||||
* gcc.dg/tree-ssa/cunroll-15.c: New testcase.
|
||||
|
||||
2018-10-01 Tamar Christina <tamar.christina@arm.com>
|
||||
|
||||
PR target/86486
|
||||
|
22
gcc/testsuite/gcc.dg/tree-ssa/cunroll-15.c
Normal file
22
gcc/testsuite/gcc.dg/tree-ssa/cunroll-15.c
Normal file
@ -0,0 +1,22 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -funroll-loops -fdump-tree-cunroll-optimized -fdump-tree-optimized" } */
|
||||
|
||||
int Test(void)
|
||||
{
|
||||
int c = 0;
|
||||
const int in[4] = {4,3,4,4};
|
||||
for (unsigned i = 0; i < 4; i++) {
|
||||
for (unsigned j = 0; j < i; j++) {
|
||||
if (in[i] == in[j])
|
||||
break;
|
||||
else
|
||||
++c;
|
||||
}
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "optimized:\[^\n\r\]*completely unrolled" 2 "cunroll" } } */
|
||||
/* When SLP vectorization is enabled the following will fail because DOM
|
||||
doesn't know how to deal with the vectorized initializer of in. */
|
||||
/* { dg-final { scan-tree-dump "return 1;" "optimized" } } */
|
@ -368,8 +368,8 @@ tree_estimate_loop_size (struct loop *loop, edge exit, edge edge_to_cancel,
|
||||
size->non_call_stmts_on_hot_path++;
|
||||
if (((gimple_code (stmt) == GIMPLE_COND
|
||||
&& (!constant_after_peeling (gimple_cond_lhs (stmt), stmt, loop)
|
||||
|| constant_after_peeling (gimple_cond_rhs (stmt), stmt,
|
||||
loop)))
|
||||
|| !constant_after_peeling (gimple_cond_rhs (stmt), stmt,
|
||||
loop)))
|
||||
|| (gimple_code (stmt) == GIMPLE_SWITCH
|
||||
&& !constant_after_peeling (gimple_switch_index (
|
||||
as_a <gswitch *> (stmt)),
|
||||
|
Loading…
Reference in New Issue
Block a user