1  /* { dg-do compile } */
       2  /* { dg-options "-fdump-tree-gimple" } */
       3  int f1(int a,int b,int c,int d)
       4  {
       5    return ((a&d)|(b&c)) ^ (b&c);
       6  }
       7  
       8  int f2(int a,int b,int c,int d)
       9  {
      10    return (b&c) ^ ((a&d)|(b&c));
      11  }
      12  
      13  int f3(int a,int b,int c,int d)
      14  {
      15    return ((b&c)|(a&d)) ^ (b&c);
      16  }
      17  
      18  int f4(int a,int b,int c,int d)
      19  {
      20    return (b&c) ^ ((b&c)|(a&d));
      21  }
      22  
      23  /* There should be no ^, 4 ~ and 12 &. */
      24  /* { dg-final { scan-tree-dump-times "\\^" 0 "gimple"} } */
      25  /* { dg-final { scan-tree-dump-times "~" 4 "gimple"} } */
      26  /* { dg-final { scan-tree-dump-times "&" 12 "gimple"} } */