// RUN: not %target-swift-frontend -emit-sil %s 2>&1 | FileCheck --check-prefix=CHECK-%target-ptrsize %s

// FIXME: This test should be merged back into
// diagnostic_constant_propagation.swift when we have fixed:
// <rdar://problem/19434979> -verify does not respect #if
//
// For the same reason, this test is using FileCheck instead of -verify.

// FIXME: <rdar://problem/19508336> Extend test/SILOptimizer/diagnostic_constant_propagation.swift to 32-bit platforms

#if arch(i386) || arch(arm)
func testArithmeticOverflow_Int_32bit() {
  do {
    // Literals.
    var t1: Int = 0x7fff_ffff // OK
    var t2: Int = 0x8000_0000
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: integer literal {{.*}}overflows when stored into 'Int'{{$}}

    var t3: Int = -0x8000_0000 // OK
    var t4: Int = -0x8000_0001
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: integer literal {{.*}}overflows when stored into 'Int'{{$}}
  }

  do {
    // Negation.
    var t1: Int = -(-0x7fff_ffff) // OK
    var t2: Int = -(-0x8000_0000)
    // FIXME: Missing diagnostic:
    // <rdar://problem/19623142> Overflow in arithmetic negation is not detected at compile time
  }

  do {
    // Addition.
    var t1: Int = 0x7fff_fffe + 1 // OK
    var t2: Int = 0x7fff_fffe + 2
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '2147483646 + 2' (on type 'Int') results in an overflow{{$}}

    var t3: Int = -0x7fff_ffff + (-1) // OK
    var t4: Int = -0x7fff_ffff + (-2)
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '-2147483647 + -2' (on type 'Int') results in an overflow{{$}}
  }

  do {
    // Subtraction.
    var t1: Int = 0x7fff_fffe - (-1) // OK
    var t2: Int = 0x7fff_fffe - (-2)
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '2147483646 - -2' (on type 'Int') results in an overflow{{$}}

    var t3: Int = -0x7fff_ffff - 1 // OK
    var t4: Int = -0x7fff_ffff - 2
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '-2147483647 - 2' (on type 'Int') results in an overflow{{$}}
  }

  do {
    // Multiplication.
    var t1: Int = 0x7fff_fffe * 1 // OK
    var t2: Int = 0x7fff_fffe * 2
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '2147483646 * 2' (on type 'Int') results in an overflow{{$}}

    var t3: Int = -0x7fff_ffff * 1 // OK
    var t4: Int = -0x7fff_ffff * 2
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '-2147483647 * 2' (on type 'Int') results in an overflow{{$}}
  }

  do {
    // Division.
    var t1: Int = 0x7fff_fffe / 2 // OK
    var t2: Int = 0x7fff_fffe / 0
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}

    var t3: Int = -0x7fff_ffff / 2 // OK
    var t4: Int = -0x7fff_ffff / 0
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}

    var t5: Int = -0x8000_0000 / -1
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division '-2147483648 / -1' results in an overflow{{$}}
  }

  do {
    // Remainder.
    var t1: Int = 0x7fff_fffe % 2 // OK
    var t2: Int = 0x7fff_fffe % 0
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}

    var t3: Int = -0x7fff_ffff % 2 // OK
    var t4: Int = -0x7fff_ffff % 0
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}

    var t5: Int = -0x8000_0000 % -1
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division '-2147483648 % -1' results in an overflow{{$}}
  }

  do {
    // Right shift.
    var t1: Int = 0 >> 0
    var t2: Int = 0 >> 1
    var t3: Int = 0 >> (-1)
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: negative integer cannot be converted to unsigned type 'Builtin.Int32'{{$}}
    // FIXME: Bad diagnostic:
    // <rdar://problem/19622485> 'Builtin.Int64' leaks into diagnostics

    var t4: Int = 123 >> 0
    var t5: Int = 123 >> 1
    var t6: Int = 123 >> (-1)
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: negative integer cannot be converted to unsigned type 'Builtin.Int32'{{$}}
    // FIXME: Bad diagnostic:
    // <rdar://problem/19622485> 'Builtin.Int64' leaks into diagnostics

    var t7: Int = (-1) >> 0
    var t8: Int = (-1) >> 1

    var t9: Int = 0x7fff_ffff >> 31 // OK
    var t10: Int = 0x7fff_ffff >> 32
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
    var t11: Int = 0x7fff_ffff >> 33
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
  }

  do {
    // Left shift.
    var t1: Int = 0 << 0
    var t2: Int = 0 << 1
    var t3: Int = 0 << (-1)
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: negative integer cannot be converted to unsigned type 'Builtin.Int32'{{$}}
    // FIXME: Bad diagnostic:
    // <rdar://problem/19622485> 'Builtin.Int64' leaks into diagnostics

    var t4: Int = 123 << 0
    var t5: Int = 123 << 1
    var t6: Int = 123 << (-1)
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: negative integer cannot be converted to unsigned type 'Builtin.Int32'{{$}}
    // FIXME: Bad diagnostic:
    // <rdar://problem/19622485> 'Builtin.Int64' leaks into diagnostics

    var t7: Int = (-1) << 0
    var t8: Int = (-1) << 1

    var t9: Int = 0x7fff_ffff << 31 // OK
    var t10: Int = 0x7fff_ffff << 32
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
    var t11: Int = 0x7fff_ffff << 33
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
  }
}

func testArithmeticOverflow_UInt_32bit() {
  do {
    // Literals.
    var t1: UInt = 0x7fff_ffff // OK
    var t2: UInt = 0x8000_0000
    var t3: UInt = 0xffff_ffff

    var t4: UInt = -1
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: negative integer {{.*}}overflows when stored into unsigned type 'UInt'{{$}}
    // FIXME: Bad diagnostic:
    // <rdar://problem/19623566> Obscure diagnostic for assigning negative numbers to unsigned

    var t5: UInt = -0xffff_ffff
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: negative {{.*}}overflows when stored into unsigned type 'UInt'{{$}}
    // FIXME: Bad diagnostic:
    // <rdar://problem/19623566> Obscure diagnostic for assigning negative numbers to unsigned
  }

  do {
    // There is no negation for unsigned integers.
  }

  do {
    // Addition.
    var t1: UInt = 0 + 0 // OK
    var t2: UInt = 0xffff_ffff + 0 // OK
    var t3: UInt = 0xffff_ffff + 1
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '4294967295 + 1' (on type 'UInt') results in an overflow{{$}}

    var t4: UInt = 0xffff_fffe + 1 // OK
    var t5: UInt = 0xffff_fffe + 2
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '4294967294 + 2' (on type 'UInt') results in an overflow{{$}}
  }

  do {
    // Subtraction.
    var t1: UInt = 0xffff_fffe - 1 // OK
    var t2: UInt = 0xffff_fffe - 0xffff_ffff
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '4294967294 - 4294967295' (on type 'UInt') results in an overflow{{$}}

    var t3: UInt = 0 - 0 // OK
    var t4: UInt = 0 - 1
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '0 - 1' (on type 'UInt') results in an overflow{{$}}
  }

  do {
    // Multiplication.
    var t1: UInt = 0xffff_ffff * 0 // OK
    var t2: UInt = 0xffff_ffff * 1 // OK
    var t3: UInt = 0xffff_ffff * 2 // OK
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '4294967295 * 2' (on type 'UInt') results in an overflow{{$}}

    var t4: UInt = 0xffff_ffff * 0xffff_ffff // OK
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '4294967295 * 4294967295' (on type 'UInt') results in an overflow{{$}}

    var t5: UInt = 0x7fff_fffe * 0 // OK
    var t6: UInt = 0x7fff_fffe * 1 // OK
    var t7: UInt = 0x7fff_fffe * 2 // OK
    var t8: UInt = 0x7fff_fffe * 3 // OK
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '2147483646 * 3' (on type 'UInt') results in an overflow{{$}}
  }

  do {
    // Division.
    var t1: UInt = 0x7fff_fffe / 2 // OK
    var t2: UInt = 0x7fff_fffe / 0
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}

    var t3: UInt = 0xffff_ffff / 2 // OK
    var t4: UInt = 0xffff_ffff / 0
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}

  }

  do {
    // Remainder.
    var t1: UInt = 0x7fff_fffe % 2 // OK
    var t2: UInt = 0x7fff_fffe % 0
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}

    var t3: UInt = 0xffff_ffff % 2 // OK
    var t4: UInt = 0xffff_ffff % 0
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}
  }

  do {
    // Right shift.
    var t1: UInt = 0 >> 0
    var t2: UInt = 0 >> 1

    var t3: UInt = 123 >> 0
    var t4: UInt = 123 >> 1

    var t5: UInt = (-1) >> 0
    var t6: UInt = (-1) >> 1

    var t7: UInt = 0x7fff_ffff >> 31 // OK
    var t8: UInt = 0x7fff_ffff >> 32
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
    var t9: UInt = 0x7fff_ffff >> 33
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
  }

  do {
    // Left shift.
    var t1: UInt = 0 << 0
    var t2: UInt = 0 << 1

    var t3: UInt = 123 << 0
    var t4: UInt = 123 << 1

    var t5: UInt = (-1) << 0
    var t6: UInt = (-1) << 1

    var t7: UInt = 0x7fff_ffff << 31 // OK
    var t8: UInt = 0x7fff_ffff << 32
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
    var t9: UInt = 0x7fff_ffff << 33
    // CHECK-32-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
  }
}

#elseif arch(x86_64) || arch(arm64) || arch(powerpc64) || arch(powerpc64le) || arch(s390x)

func testArithmeticOverflow_Int_64bit() {
  do {
    // Literals.
    var t1: Int = 0x7fff_ffff_ffff_ffff // OK
    var t2: Int = 0x8000_0000_0000_0000
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: integer literal {{.*}} overflows when stored into 'Int'{{$}}

    var t3: Int = -0x8000_0000_0000_0000 // OK
    var t4: Int = -0x8000_0000_0000_0001
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: integer literal {{.*}} overflows when stored into 'Int'{{$}}
  }

  do {
    // Negation.
    var t1: Int = -(-0x7fff_ffff_ffff_ffff) // OK
    var t2: Int = -(-0x8000_0000_0000_0000)
    // FIXME: Missing diagnostic:
    // <rdar://problem/19623142> Overflow in arithmetic negation is not detected at compile time
  }

  do {
    // Addition.
    var t1: Int = 0x7fff_ffff_ffff_fffe + 1 // OK
    var t2: Int = 0x7fff_ffff_ffff_fffe + 2
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '9223372036854775806 + 2' (on type 'Int') results in an overflow{{$}}

    var t3: Int = -0x7fff_ffff_ffff_ffff + (-1) // OK
    var t4: Int = -0x7fff_ffff_ffff_ffff + (-2)
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '-9223372036854775807 + -2' (on type 'Int') results in an overflow{{$}}
  }

  do {
    // Subtraction.
    var t1: Int = 0x7fff_ffff_ffff_fffe - (-1) // OK
    var t2: Int = 0x7fff_ffff_ffff_fffe - (-2)
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '9223372036854775806 - -2' (on type 'Int') results in an overflow{{$}}

    var t3: Int = -0x7fff_ffff_ffff_ffff - 1 // OK
    var t4: Int = -0x7fff_ffff_ffff_ffff - 2
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '-9223372036854775807 - 2' (on type 'Int') results in an overflow{{$}}
  }

  do {
    // Multiplication.
    var t1: Int = 0x7fff_ffff_ffff_fffe * 1 // OK
    var t2: Int = 0x7fff_ffff_ffff_fffe * 2
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '9223372036854775806 * 2' (on type 'Int') results in an overflow{{$}}

    var t3: Int = -0x7fff_ffff_ffff_ffff * 1 // OK
    var t4: Int = -0x7fff_ffff_ffff_ffff * 2
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '-9223372036854775807 * 2' (on type 'Int') results in an overflow{{$}}
  }

  do {
    // Division.
    var t1: Int = 0x7fff_ffff_ffff_fffe / 2 // OK
    var t2: Int = 0x7fff_ffff_ffff_fffe / 0
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}

    var t3: Int = -0x7fff_ffff_ffff_ffff / 2 // OK
    var t4: Int = -0x7fff_ffff_ffff_ffff / 0
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}

    var t5: Int = -0x8000_0000_0000_0000 / -1
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division '-9223372036854775808 / -1' results in an overflow{{$}}
  }

  do {
    // Remainder.
    var t1: Int = 0x7fff_ffff_ffff_fffe % 2 // OK
    var t2: Int = 0x7fff_ffff_ffff_fffe % 0
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}

    var t3: Int = -0x7fff_ffff_ffff_ffff % 2 // OK
    var t4: Int = -0x7fff_ffff_ffff_ffff % 0
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}

    var t5: Int = -0x8000_0000_0000_0000 % -1
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division '-9223372036854775808 % -1' results in an overflow{{$}}
  }

  do {
    // Right shift.
    var t1: Int = 0 >> 0
    var t2: Int = 0 >> 1
    var t3: Int = 0 >> (-1)
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: negative integer cannot be converted to unsigned type 'Builtin.Int64'{{$}}
    // FIXME: Bad diagnostic:
    // <rdar://problem/19622485> 'Builtin.Int64' leaks into diagnostics

    var t4: Int = 123 >> 0
    var t5: Int = 123 >> 1
    var t6: Int = 123 >> (-1)
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: negative integer cannot be converted to unsigned type 'Builtin.Int64'{{$}}
    // FIXME: Bad diagnostic:
    // <rdar://problem/19622485> 'Builtin.Int64' leaks into diagnostics

    var t7: Int = (-1) >> 0
    var t8: Int = (-1) >> 1

    var t9: Int = 0x7fff_ffff_ffff_ffff >> 63
    var t10: Int = 0x7fff_ffff_ffff_ffff >> 64
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
    var t11: Int = 0x7fff_ffff_ffff_ffff >> 65
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
  }

  do {
    // Left shift.
    var t1: Int = 0 << 0
    var t2: Int = 0 << 1
    var t3: Int = 0 << (-1)
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: negative integer cannot be converted to unsigned type 'Builtin.Int64'{{$}}
    // FIXME: Bad diagnostic:
    // <rdar://problem/19622485> 'Builtin.Int64' leaks into diagnostics

    var t4: Int = 123 << 0
    var t5: Int = 123 << 1
    var t6: Int = 123 << (-1)
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: negative integer cannot be converted to unsigned type 'Builtin.Int64'{{$}}
    // FIXME: Bad diagnostic:
    // <rdar://problem/19622485> 'Builtin.Int64' leaks into diagnostics

    var t7: Int = (-1) << 0
    var t8: Int = (-1) << 1

    var t9: Int = 0x7fff_ffff_ffff_ffff << 63
    var t10: Int = 0x7fff_ffff_ffff_ffff << 64
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
    var t11: Int = 0x7fff_ffff_ffff_ffff << 65
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
  }
}

func testArithmeticOverflow_UInt_64bit() {
  do {
    // Literals.
    var t1: UInt = 0x7fff_ffff_ffff_ffff // OK
    var t2: UInt = 0x8000_0000_0000_0000
    var t3: UInt = 0xffff_ffff_ffff_ffff

    var t4: UInt = -1
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: negative integer {{.*}} overflows when stored into unsigned type 'UInt'{{$}}

    var t5: UInt = -0xffff_ffff_ffff_ffff
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: negative integer {{.*}} overflows when stored into unsigned type 'UInt'{{$}}
  }

  do {
    // There is no negation for unsigned integers.
  }

  do {
    // Addition.
    var t1: UInt = 0 + 0 // OK
    var t2: UInt = 0xffff_ffff_ffff_ffff + 0 // OK
    var t3: UInt = 0xffff_ffff_ffff_ffff + 1
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '18446744073709551615 + 1' (on type 'UInt') results in an overflow{{$}}

    var t4: UInt = 0xffff_ffff_ffff_fffe + 1 // OK
    var t5: UInt = 0xffff_ffff_ffff_fffe + 2
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '18446744073709551614 + 2' (on type 'UInt') results in an overflow{{$}}
  }

  do {
    // Subtraction.
    var t1: UInt = 0xffff_ffff_ffff_fffe - 1 // OK
    var t2: UInt = 0xffff_ffff_ffff_fffe - 0xffff_ffff_ffff_ffff
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '18446744073709551614 - 18446744073709551615' (on type 'UInt') results in an overflow{{$}}

    var t3: UInt = 0 - 0 // OK
    var t4: UInt = 0 - 1
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '0 - 1' (on type 'UInt') results in an overflow{{$}}
  }

  do {
    // Multiplication.
    var t1: UInt = 0xffff_ffff_ffff_ffff * 0 // OK
    var t2: UInt = 0xffff_ffff_ffff_ffff * 1 // OK
    var t3: UInt = 0xffff_ffff_ffff_ffff * 2 // OK
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '18446744073709551615 * 2' (on type 'UInt') results in an overflow{{$}}

    var t4: UInt = 0xffff_ffff_ffff_ffff * 0xffff_ffff_ffff_ffff // OK
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '18446744073709551615 * 18446744073709551615' (on type 'UInt') results in an overflow{{$}}

    var t5: UInt = 0x7fff_ffff_ffff_fffe * 0 // OK
    var t6: UInt = 0x7fff_ffff_ffff_fffe * 1 // OK
    var t7: UInt = 0x7fff_ffff_ffff_fffe * 2 // OK
    var t8: UInt = 0x7fff_ffff_ffff_fffe * 3 // OK
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: arithmetic operation '9223372036854775806 * 3' (on type 'UInt') results in an overflow{{$}}
  }

  do {
    // Division.
    var t1: UInt = 0x7fff_ffff_ffff_fffe / 2 // OK
    var t2: UInt = 0x7fff_ffff_ffff_fffe / 0
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}

    var t3: UInt = 0xffff_ffff_ffff_ffff / 2 // OK
    var t4: UInt = 0xffff_ffff_ffff_ffff / 0
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}

  }

  do {
    // Remainder.
    var t1: UInt = 0x7fff_ffff_ffff_fffe % 2 // OK
    var t2: UInt = 0x7fff_ffff_ffff_fffe % 0
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}

    var t3: UInt = 0xffff_ffff_ffff_ffff % 2 // OK
    var t4: UInt = 0xffff_ffff_ffff_ffff % 0
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: division by zero{{$}}
  }

  do {
    // Right shift.
    var t1: UInt = 0 >> 0
    var t2: UInt = 0 >> 1

    var t3: UInt = 123 >> 0
    var t4: UInt = 123 >> 1

    var t5: UInt = (-1) >> 0
    var t6: UInt = (-1) >> 1

    var t7: UInt = 0x7fff_ffff_ffff_ffff >> 63 // OK
    var t8: UInt = 0x7fff_ffff_ffff_ffff >> 64
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
    var t9: UInt = 0x7fff_ffff_ffff_ffff >> 65
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
  }

  do {
    // Left shift.
    var t1: UInt = 0 << 0
    var t2: UInt = 0 << 1

    var t3: UInt = 123 << 0
    var t4: UInt = 123 << 1

    var t5: UInt = (-1) << 0
    var t6: UInt = (-1) << 1

    var t7: UInt = 0x7fff_ffff_ffff_ffff << 63 // OK
    var t8: UInt = 0x7fff_ffff_ffff_ffff << 64
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
    var t9: UInt = 0x7fff_ffff_ffff_ffff << 65
    // CHECK-64-DAG: .swift:[[@LINE-1]]:{{[0-9]+}}: error: shift amount is greater than or equal to type size in bits{{$}}
  }
}

#else
_Unimplemented()
#endif

