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  */