1 struct s { 2 int c[1]; 3 }; 4 5 static struct s x, y; 6 static int p; 7 8 static void foo0(void) 9 { 10 (x = y).c; // x = y; 11 } 12 13 static void foo1(void) 14 { 15 int *t = (x = y).c; // x = y; 16 } 17 18 static void foo2(void) 19 { 20 (x = y).c + 1; // x = y; 21 } 22 23 static void foo3(void) 24 { 25 (x = y).c[0]; // x = y; 26 } 27 28 static void foo4(void) 29 { 30 (p ? x : y).c[0]; // ; 31 } 32 33 static void foo5(void) 34 { 35 (p, y).c[0]; // ; 36 } 37 38 /* 39 * check-name: kill-stores1 40 * check-command: test-linearize -Wno-decl $file 41 * 42 * check-output-ignore 43 * check-output-pattern(4): load\\. 44 * check-output-pattern(4): load\\..*0\\[y\\] 45 * check-output-pattern(4): store\\. 46 * check-output-pattern(4): store\\..*0\\[x\\] 47 * check-output-excludes: select\\. 48 */