1  /* PR middle-end/105777 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -fdump-tree-optimized" } */
       4  /* { dg-final { scan-tree-dump-not "\.MUL_OVERFLOW " "optimized" } } */
       5  /* { dg-final { scan-tree-dump " \\+ 61356675;" "optimized" { target int32 } } } */
       6  /* { dg-final { scan-tree-dump " > 122713350" "optimized" { target int32 } } } */
       7  /* { dg-final { scan-tree-dump " \\+ 263524915338707880" "optimized" { target lp64 } } } */
       8  /* { dg-final { scan-tree-dump " > 527049830677415760" "optimized" { target lp64 } } } */
       9  /* { dg-final { scan-tree-dump " \\+ 51130563" "optimized" { target int32 } } } */
      10  /* { dg-final { scan-tree-dump " > 102261126" "optimized" { target int32 } } } */
      11  /* { dg-final { scan-tree-dump " \\+ 219604096115589900" "optimized" { target lp64 } } } */
      12  /* { dg-final { scan-tree-dump " > 439208192231179800" "optimized" { target lp64 } } } */
      13  /* { dg-final { scan-tree-dump " \\+ 55063683;" "optimized" { target int32 } } } */
      14  /* { dg-final { scan-tree-dump " > 110127366" "optimized" { target int32 } } } */
      15  /* { dg-final { scan-tree-dump " \\+ 236496718893712200" "optimized" { target lp64 } } } */
      16  /* { dg-final { scan-tree-dump " > 472993437787424400" "optimized" { target lp64 } } } */
      17  /* { dg-final { scan-tree-dump " \\+ 46684427" "optimized" { target int32 } } } */
      18  /* { dg-final { scan-tree-dump " > 93368854" "optimized" { target int32 } } } */
      19  /* { dg-final { scan-tree-dump " \\+ 200508087757712517" "optimized" { target lp64 } } } */
      20  /* { dg-final { scan-tree-dump " > 401016175515425034" "optimized" { target lp64 } } } */
      21  
      22  __attribute__((noipa)) int
      23  foo (int x)
      24  {
      25    return __builtin_mul_overflow_p (x, 35, 0);
      26  }
      27  
      28  __attribute__((noipa)) int
      29  bar (long int x)
      30  {
      31    return __builtin_mul_overflow_p (x, 35L, 0L);
      32  }
      33  
      34  __attribute__((noipa)) int
      35  baz (int x)
      36  {
      37    return __builtin_mul_overflow_p (42, x, 0);
      38  }
      39  
      40  __attribute__((noipa)) int
      41  qux (long int x)
      42  {
      43    return __builtin_mul_overflow_p (42, x, 0L);
      44  }
      45  
      46  __attribute__((noipa)) int
      47  corge (int x)
      48  {
      49    return __builtin_mul_overflow_p (x, -39, 0);
      50  }
      51  
      52  __attribute__((noipa)) int
      53  garply (long int x)
      54  {
      55    return __builtin_mul_overflow_p (x, -39L, 0L);
      56  }
      57  
      58  __attribute__((noipa)) int
      59  grault (int x)
      60  {
      61    return __builtin_mul_overflow_p (-46, x, 0);
      62  }
      63  
      64  __attribute__((noipa)) int
      65  waldo (long int x)
      66  {
      67    return __builtin_mul_overflow_p (-46, x, 0L);
      68  }