===================================================================
@@ -2428,16 +2428,8 @@ thread_through_all_blocks (bool may_peel
/* 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);
===================================================================
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+
+int a, b;
+void
+fn1 ()
+{
+ int c = 0;
+ while (b)
+ {
+ switch (c)
+ case 1:
+ fn1 ();
+ if (a)
+ c = 1;
+ b = 0;
+ }
+}