diff options
author | Richard Biener <rguenther@suse.de> | 2014-11-27 09:57:13 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2014-11-27 09:57:13 +0000 |
commit | e311c2d89a3bb45fe65e384126699dbaa2f57fdf (patch) | |
tree | b2ae7dcaa446b230288162b1377c9002c03d3788 /gcc/tree-ssa-threadupdate.c | |
parent | 598f8eca02c516a19abc957c3d4510e7c1c78214 (diff) | |
download | gcc-e311c2d89a3bb45fe65e384126699dbaa2f57fdf.zip gcc-e311c2d89a3bb45fe65e384126699dbaa2f57fdf.tar.gz gcc-e311c2d89a3bb45fe65e384126699dbaa2f57fdf.tar.bz2 |
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
Diffstat (limited to 'gcc/tree-ssa-threadupdate.c')
-rw-r--r-- | gcc/tree-ssa-threadupdate.c | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/gcc/tree-ssa-threadupdate.c b/gcc/tree-ssa-threadupdate.c index ca0b8bf..a8243ae 100644 --- a/gcc/tree-ssa-threadupdate.c +++ b/gcc/tree-ssa-threadupdate.c @@ -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; - } + e->aux = NULL; else { delete_jump_thread_path (path); |