/* PR tree-optimization/79472 */ /* { dg-options "-O2 -fdump-tree-switchconv" } */ /* { dg-do compile { target nonpic } } */ void foo (unsigned int v) { const char *s; switch (v) { case 0: s = "foo"; break; case 1: s = "bar"; break; case 2: s = "spam"; break; default: for (int i = 0; i < v; i++) __builtin_printf ("baz\n"); return; } __builtin_printf ("%s\n", s); } int bar (unsigned int v, int w) { const char *s; switch (v) { case 0: s = "foo"; break; case 1: s = "bar"; break; case 2: s = "spam"; break; default: __builtin_printf ("baz\n"); if (v > 25) __builtin_printf ("bl1\n"); else __builtin_printf ("bl2\n"); goto lab; } __builtin_printf ("%s\n", s); if (w > 25) __builtin_printf ("cl1\n"); else __builtin_printf ("cl2\n"); lab: __builtin_printf ("dl\n"); return v + w; } /* { dg-final { scan-tree-dump-times "Switch converted" 2 "switchconv" } } */ /* { dg-final { scan-tree-dump-times "= CSWTCH" 2 "switchconv" } } */