53 lines
790 B
C
53 lines
790 B
C
/* PR middle-end/34934 */
|
|
|
|
#include <stdarg.h>
|
|
|
|
typedef struct
|
|
{
|
|
int e[1024];
|
|
int f;
|
|
} S;
|
|
|
|
void foo (long *, va_list);
|
|
|
|
void
|
|
bar (long *x, S *y, int z, ...)
|
|
{
|
|
int i, j;
|
|
va_list ap;
|
|
va_start (ap, z);
|
|
for (j = y->e[i = 1]; i <= y->f; j = y->e[++i])
|
|
{
|
|
switch (z)
|
|
{
|
|
case 1:
|
|
if (!(*x & 0x00000020))
|
|
continue;
|
|
case 3:
|
|
if (!(*x & 0x00000080))
|
|
continue;
|
|
case 9:
|
|
if (!(*x & 0x04000000))
|
|
continue;
|
|
case 4:
|
|
if (!(*x & 0x00000200))
|
|
continue;
|
|
case 8:
|
|
if (!(*x & 0x00100000))
|
|
continue;
|
|
case 6:
|
|
if (!(*x & 0x00000100))
|
|
continue;
|
|
case 7:
|
|
if (!(*x & 0x00040000))
|
|
continue;
|
|
case 10:
|
|
if (!(*x & 0x00000020)
|
|
&& ((*x & 0x00008000) || (*x & 0x08000000)))
|
|
continue;
|
|
}
|
|
foo (x, ap);
|
|
}
|
|
va_end (ap);
|
|
}
|