1 /* 2 pr51466.c from the execute part of the gcc torture tests. 3 */ 4 5 #include <testfwk.h> 6 7 #ifdef __SDCC 8 #pragma std_c99 9 #endif 10 11 /* PR tree-optimization/51466 */ 12 13 int foo(int i)14foo (int i) 15 { 16 volatile int v[4]; 17 int *p; 18 v[i] = 6; 19 p = (int *) &v[i]; 20 return *p; 21 } 22 23 int bar(int i)24bar (int i) 25 { 26 volatile int v[4]; 27 int *p; 28 v[i] = 6; 29 p = (int *) &v[i]; 30 *p = 8; 31 return v[i]; 32 } 33 34 int baz(int i)35baz (int i) 36 { 37 volatile int v[4]; 38 int *p; 39 v[i] = 6; 40 p = (int *) &v[0]; 41 *p = 8; 42 return v[i]; 43 } 44 45 void testTortureExecute(void)46testTortureExecute (void) 47 { 48 if (foo (3) != 6 || bar (2) != 8 || baz (0) != 8 || baz (1) != 6) 49 ASSERT (0); 50 return; 51 } 52 53