1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -fdump-tree-optimized-alias" } */
       3  
       4  int *abc(int** __restrict a, int** __restrict b)
       5  {
       6    *a = 0;                     // clique 1 base 1
       7    asm volatile("":"+m"(*b));  // clique 0 base 0 (wrong)
       8    *a = 0;                     // clique 1 base 1
       9    return *b;                  // clique 1 base 2 (what it should be)
      10  }
      11  
      12  /* { dg-final { scan-tree-dump-times "clique 1 base \[12\]" 5 "optimized" } } */
      13  /* On RTL we can DSE one of the stores of zero, on the GIMPLE level we
      14     do not bother to do disambiguation against asms.  */
      15  /* { dg-final { scan-tree-dump-times " = 0;" 1 "optimized" { xfail *-*-* } } } */
      16  /* { dg-final { scan-assembler-times "mov\[^\n\r\]*0" 1 { target { x86_64-*-* i?86-*-* } } } } */