JS: provide overflow behaviour for int binary operations (see KT-7733)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
package foo
|
||||
|
||||
// CHECK_CONTAINS_NO_CALLS: multiplyInline
|
||||
// CHECK_CONTAINS_NO_CALLS: multiplyInline except=imul
|
||||
// CHECK_NOT_CALLED: runNoinline
|
||||
|
||||
internal inline fun multiply(a: Int, b: Int) = a * b
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package foo
|
||||
|
||||
// CHECK_CONTAINS_NO_CALLS: squareMultipliedByTwo
|
||||
// CHECK_CONTAINS_NO_CALLS: squareMultipliedByTwo except=imul
|
||||
|
||||
internal inline fun inline1(a: Int): Int {
|
||||
return a
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package foo
|
||||
|
||||
// CHECK_CONTAINS_NO_CALLS: squareMultipliedByTwo
|
||||
// CHECK_CONTAINS_NO_CALLS: squareMultipliedByTwo except=imul
|
||||
|
||||
internal inline fun inline1(a: Int): Int {
|
||||
return a
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package foo
|
||||
|
||||
// CHECK_CONTAINS_NO_CALLS: multiplyNoInline
|
||||
// CHECK_CONTAINS_NO_CALLS: multiplyNoInline except=imul
|
||||
|
||||
internal inline fun multiply(a: Int, b: Int): Int {
|
||||
return a * b
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package foo
|
||||
|
||||
// CHECK_CONTAINS_NO_CALLS: maxBySquare
|
||||
// CHECK_CONTAINS_NO_CALLS: maxBySquare except=imul
|
||||
|
||||
internal data class Result(var value: Int = 0, var invocationCount: Int = 0)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package foo
|
||||
|
||||
// CHECK_CONTAINS_NO_CALLS: test
|
||||
// CHECK_CONTAINS_NO_CALLS: test except=imul
|
||||
// CHECK_VARS_COUNT: function=test count=0
|
||||
|
||||
// A copy of stdlib run function.
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package foo
|
||||
|
||||
fun bigValue() = 0x7FFFFFFC
|
||||
|
||||
fun mediumValue() = 0x12345
|
||||
|
||||
fun box(): String {
|
||||
var v = bigValue() + 1
|
||||
if (v != 0x7FFFFFFD) return "fail1: $v"
|
||||
|
||||
v = bigValue() + 8
|
||||
if (v != -0x7FFFFFFC) return "fail2: $v"
|
||||
|
||||
v = mediumValue() * 0x23456
|
||||
if (v != -2112496338) return "fail3: $v"
|
||||
|
||||
v = bigValue() * bigValue()
|
||||
if (v != 16) return "fail4: $v"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user