1/* { dg-options "-mtune=i686" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */ 2 3extern void abort (void); 4extern void exit (int); 5 6long baz1 (void *a) 7{ 8 static long l; 9 return l++; 10} 11 12int baz2 (const char *a) 13{ 14 return 0; 15} 16 17int baz3 (int i) 18{ 19 if (!i) 20 abort (); 21 return 1; 22} 23 24void **bar; 25 26int foo (void *a, long b, int c) 27{ 28 int d = 0, e, f = 0, i; 29 char g[256]; 30 void **h; 31 32 g[0] = '\n'; 33 g[1] = 0; 34 35 while (baz1 (a) < b) { 36 if (g[0] != ' ' && g[0] != '\t') { 37 f = 1; 38 e = 0; 39 if (!d && baz2 (g) == 0) { 40 if ((c & 0x10) == 0) 41 continue; 42 e = d = 1; 43 } 44 if (!((c & 0x10) && (c & 0x4000) && e) && (c & 2)) 45 continue; 46 if ((c & 0x2000) && baz2 (g) == 0) 47 continue; 48 if ((c & 0x1408) && baz2 (g) == 0) 49 continue; 50 if ((c & 0x200) && baz2 (g) == 0) 51 continue; 52 if (c & 0x80) { 53 for (h = bar, i = 0; h; h = (void **)*h, i++) 54 if (baz3 (i)) 55 break; 56 } 57 f = 0; 58 } 59 } 60 return 0; 61} 62 63int main () 64{ 65 void *n = 0; 66 bar = &n; 67 foo (&n, 1, 0xc811); 68 exit (0); 69} 70