struct s { int c[1]; }; static struct s x, y; static int p; static void foo0(void) { (x = y).c; // x = y; } static void foo1(void) { int *t = (x = y).c; // x = y; } static void foo2(void) { (x = y).c + 1; // x = y; } static void foo3(void) { (x = y).c[0]; // x = y; } static void foo4(void) { (p ? x : y).c[0]; // ; } static void foo5(void) { (p, y).c[0]; // ; } /* * check-name: kill-stores1 * check-command: test-linearize -Wno-decl $file * * check-output-ignore * check-output-pattern(4): load\\. * check-output-pattern(4): load\\..*0\\[y\\] * check-output-pattern(4): store\\. * check-output-pattern(4): store\\..*0\\[x\\] * check-output-excludes: select\\. */