1  /* PR tree-optimization/93118 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -fdump-tree-optimized" } */
       4  /* { dg-final { scan-tree-dump-not ">>" "optimized" } } */
       5  /* { dg-final { scan-tree-dump-not "<<" "optimized" } } */
       6  
       7  #if __SIZEOF_LONG_LONG__ == 8 && __SIZEOF_INT__ == 4 && __CHAR_BIT__ == 8
       8  unsigned long long
       9  foo (unsigned long long a)
      10  {
      11    unsigned long long b = a >> 32;
      12    int c = b;
      13    unsigned long long d = c;
      14    return d << 32;
      15  }
      16  
      17  unsigned long long
      18  bar (unsigned long long a)
      19  {
      20    unsigned long long b = a >> 32;
      21    unsigned c = b;
      22    unsigned long long d = c;
      23    return d << 32;
      24  }
      25  
      26  unsigned long long
      27  baz (long long a)
      28  {
      29    long long b = a >> 32;
      30    unsigned long long c = b;
      31    return c << 32;
      32  }
      33  
      34  typedef unsigned V __attribute__((vector_size (2 * sizeof (int))));
      35  typedef int W __attribute__((vector_size (2 * sizeof (int))));
      36  
      37  void
      38  quux (W *w, V *v)
      39  {
      40    W a = (W) (*v >> 16);
      41    *w = a << 16;
      42  }
      43  #else
      44  int i;
      45  #endif