re PR tree-optimization/46107 (-ftree-loop-distribute-patterns caused verify_loop_structure problem)
PR tree-optimization/46107 * cfgloopmanip.c (loop_version): Set irred_flag back into entry->flags if cfg_hook_duplicate_loop_to_header_edge failed. * gcc.c-torture/compile/pr46107.c: New test. From-SVN: r166234
This commit is contained in:
parent
48215350c2
commit
71056fef3b
@ -1,3 +1,9 @@
|
||||
2010-11-03 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/46107
|
||||
* cfgloopmanip.c (loop_version): Set irred_flag back into entry->flags
|
||||
if cfg_hook_duplicate_loop_to_header_edge failed.
|
||||
|
||||
2010-11-03 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
PR lto/46273
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* Loop manipulation code for GNU compiler.
|
||||
Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009 Free Software
|
||||
Foundation, Inc.
|
||||
Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
@ -1538,7 +1538,10 @@ loop_version (struct loop *loop,
|
||||
/* Duplicate loop. */
|
||||
if (!cfg_hook_duplicate_loop_to_header_edge (loop, entry, 1,
|
||||
NULL, NULL, NULL, 0))
|
||||
return NULL;
|
||||
{
|
||||
entry->flags |= irred_flag;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* After duplication entry edge now points to new loop head block.
|
||||
Note down new head as second_head. */
|
||||
|
@ -1,5 +1,8 @@
|
||||
2010-11-03 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/46107
|
||||
* gcc.c-torture/compile/pr46107.c: New test.
|
||||
|
||||
PR debug/46252
|
||||
* gcc.dg/pr46252.c: New test.
|
||||
|
||||
|
16
gcc/testsuite/gcc.c-torture/compile/pr46107.c
Normal file
16
gcc/testsuite/gcc.c-torture/compile/pr46107.c
Normal file
@ -0,0 +1,16 @@
|
||||
/* PR tree-optimization/46107 */
|
||||
|
||||
int foo (void) __attribute__ ((noreturn));
|
||||
|
||||
void
|
||||
bar (int x, int *y, int z)
|
||||
{
|
||||
static void *j[] = { &&l1, &&l2 };
|
||||
l1:
|
||||
if (*y)
|
||||
goto *j[z];
|
||||
foo ();
|
||||
l2:
|
||||
*y ^= (x & 1) ? -1 : 0;
|
||||
goto *j[x];
|
||||
}
|
Loading…
Reference in New Issue
Block a user