Commit e311c2d8 by Richard Biener Committed by Richard Biener

re PR middle-end/64083 (ICE: in fix_loop_structure, at loop-init.c:252 compiling Linux Kernel)

2014-11-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/64083
	* tree-ssa-threadupdate.c (thread_through_all_blocks): Do not
	forcibly mark loop for removal the wrong way.

	* gcc.dg/torture/pr64083.c: New testcase.

From-SVN: r218115
parent 598f8eca
2014-11-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/64083
* tree-ssa-threadupdate.c (thread_through_all_blocks): Do not
forcibly mark loop for removal the wrong way.
2014-11-27 Richard Biener <rguenther@suse.de>
PR middle-end/63704
* alias.c (mems_in_disjoint_alias_sets_p): Remove assert
and instead return false when !fstrict-aliasing.
2014-11-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/64083
* gcc.dg/torture/pr64083.c: New testcase.
2014-11-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/61634
* gcc.dg/vect/pr61634.c: New testcase.
......
/* { dg-do compile } */
int a, b;
void
fn1 ()
{
int c = 0;
while (b)
{
switch (c)
case 1:
fn1 ();
if (a)
c = 1;
b = 0;
}
}
......@@ -2428,16 +2428,8 @@ thread_through_all_blocks (bool may_peel_loop_headers)
/* Our path is still valid, thread it. */
if (e->aux)
{
struct loop *loop = (*path)[0]->e->dest->loop_father;
if (thread_block ((*path)[0]->e->dest, false))
{
/* This jump thread likely totally scrambled this loop.
So arrange for it to be fixed up. */
loop->header = NULL;
loop->latch = NULL;
e->aux = NULL;
}
else
{
delete_jump_thread_path (path);
......
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