1  /* PR tree-optimization/94800 */
       2  /* { dg-do compile { target { ilp32 || lp64 } } } */
       3  /* { dg-options "-O2 -fdump-tree-optimized" } */
       4  /* { dg-final { scan-tree-dump-times " \* 72340172838076673" 2 "optimized" } } */
       5  /* { dg-final { scan-tree-dump-times " \* 16843009" 2 "optimized" } } */
       6  /* { dg-final { scan-tree-dump-times " \* 289360691352306692" 2 "optimized" } } */
       7  /* { dg-final { scan-tree-dump-times " \* 1229782938247303441" 2 "optimized" } } */
       8  /* { dg-final { scan-tree-dump-not "<<" "optimized" } } */
       9  
      10  unsigned long long int
      11  foo (unsigned long long int x)
      12  {
      13    unsigned long long int a = x + (x << 8);
      14    unsigned long long int b = a + (a << 16);
      15    unsigned long long int c = b + (b << 32);
      16    return c;
      17  }
      18  
      19  unsigned int
      20  bar (unsigned int x)
      21  {
      22    unsigned int a = x + (x << 8);
      23    unsigned int b = a + (a << 16);
      24    return b;
      25  }
      26  
      27  unsigned long long int
      28  baz (unsigned long long int x)
      29  {
      30    unsigned long long int a = (x << 2) + (x << 10);
      31    unsigned long long int b = a + (a << 16);
      32    unsigned long long int c = b + (b << 32);
      33    return c;
      34  }
      35  
      36  unsigned long long int
      37  qux (unsigned long long int x)
      38  {
      39    unsigned long long int a = x + (x << 4);
      40    unsigned long long int b = a + (a << 8);
      41    unsigned long long int c = b + (b << 16);
      42    unsigned long long int d = c + (c << 32);
      43    return d;
      44  }
      45  
      46  long long int
      47  quux (long long int x)
      48  {
      49    long long int a = x + (x << 8);
      50    long long int b = a + (a << 16);
      51    long long int c = b + (b << 32);
      52    return c;
      53  }
      54  
      55  int
      56  corge (int x)
      57  {
      58    int a = x + (x << 8);
      59    int b = a + (a << 16);
      60    return b;
      61  }
      62  
      63  long long int
      64  garply (long long int x)
      65  {
      66    long long int a = (x << 2) + (x << 10);
      67    long long int b = a + (a << 16);
      68    long long int c = b + (b << 32);
      69    return c;
      70  }
      71  
      72  long long int
      73  waldo (long long int x)
      74  {
      75    long long int a = x + (x << 4);
      76    long long int b = a + (a << 8);
      77    long long int c = b + (b << 16);
      78    long long int d = c + (c << 32);
      79    return d;
      80  }