blob: b13ab5fc121e5a827e39610707869cfc78e9b0d2 [file] [log] [blame]
/* PR middle-end/80421 */
__attribute__ ((noinline, noclone)) void
baz (const char *t, ...)
{
asm volatile (""::"r" (t):"memory");
if (*t == 'T')
__builtin_abort ();
}
unsigned int
foo (char x)
{
baz ("x %c\n", x);
switch (x)
{
default:
baz ("case default\n");
if (x == 'D' || x == 'I')
baz ("This should never be reached.\n");
return 0;
case 'D':
baz ("case 'D'\n");
return 0;
case 'I':
baz ("case 'I'\n");
return 0;
}
}
void
bar (void)
{
int a = 2;
int b = 5;
char c[] = {
2, 4, 1, 2, 5, 5, 2, 4, 4, 0, 0, 0, 0, 0, 0, 3, 4, 4, 2, 4,
1, 2, 5, 5, 2, 4, 1, 0, 0, 0, 2, 4, 4, 3, 4, 3, 3, 5, 1, 3,
5, 5, 2, 4, 4, 2, 4, 1, 3, 5, 3, 3, 5, 1, 3, 5, 1, 2, 4, 4,
2, 4, 2, 3, 5, 1, 3, 5, 1, 3, 5, 5, 2, 4, 1, 2, 4, 2, 3, 5,
3, 3, 5, 1, 3, 5, 5, 2, 4, 1, 2, 4, 1, 3, 5, 3, 3, 5, 1, 3,
5, 5, 2, 4, 4, 2, 4, 1, 3, 5, 3, 3, 5, 1, 3, 5, 1, 2, 4, 1,
2, 4, 2, 3, 5, 1, 3, 5, 1, 3, 5, 1, 2, 4, 1, 2, 4, 1, 3, 5,
1, 3, 5, 1, 3, 5, 1, 2, 4, 4, 2, 4, 1, 3, 5, 1, 3, 5, 1, 3,
5, 5, 2, 4, 4, 2, 4, 2, 3, 5, 3, 3, 5, 1, 3, 5, 5, 2, 4, 4,
2, 4, 1, 3, 5, 3, 3, 5, 1, 3, 5, 1, 2, 5, 5, 2, 4, 2, 3, 5,
1, 3, 4, 1, 3, 5, 1, 2, 5, 5, 2, 4, 1, 2, 5, 1, 3, 5, 3, 3,
5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 1, 3, 5, 3, 3, 5, 1, 2, 5, 1,
2, 4, 1, 2, 5, 2, 3, 5, 1, 3, 5, 1, 2, 5, 1, 2, 4, 2, 2, 5,
1, 3, 5, 1, 3, 5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 2, 3, 5, 3, 3,
5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 2, 3, 5, 3, 3, 5, 1, 2, 5, 5,
2, 4, 2, 2, 5, 1, 3, 5, 3, 3, 5, 1, 2, 5, 5, 2, 4, 2, 2, 5,
1, 3, 5, 3, 3, 5, 1, 2, 5, 1, 2, 4, 1, 2, 5, 2, 3, 5, 1, 3,
5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 2, 3, 5, 3, 3, 5, 1, 2, 5, 5,
2, 4, 1, 2, 5, 1, 3, 5, 3, 3, 5, 1, 2, 5, 5, 2, 4, 2, 2, 5,
1, 3, 5, 3, 3, 5, 1, 2, 5, 5, 2, 4, 2, 2, 5, 1, 3, 5, 3, 3,
5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
char *f = c + 390;
int i, j, e, g, h;
char k, l;
i = 26;
j = 25;
k = l = 'M';
h = 2;
while (i > 0)
{
int x = i - a;
x = x > 0 ? x : 0;
x = j - x;
g = x * 3 + h;
switch (f[g])
{
case 1:
--i;
--j;
h = 2;
f -= b * 3;
k = 'M';
break;
case 2:
--i;
h = 0;
f -= b * 3;
k = 'I';
break;
case 3:
--i;
h = 2;
f -= b * 3;
k = 'I';
break;
case 4:
--j;
h = 1;
k = 'D';
break;
case 5:
--j;
h = 2;
k = 'D';
break;
}
if (k == l)
++e;
else
{
foo (l);
l = k;
}
}
}
int
main ()
{
char l = 'D';
foo (l);
bar ();
return 0;
}