Merge branch 'proper-inline' into inline

# Conflicts:
#	backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/KonanLower.kt
#	backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/IrToBitcode.kt
#	backend.native/tests/build.gradle
#	backend.native/tests/codegen/inline/inline5.kt
#	gradle.properties
This commit is contained in:
Konstantin Anisimov
2017-02-03 11:18:47 +07:00
10 changed files with 161 additions and 52 deletions
+7 -22
View File
@@ -860,11 +860,6 @@ task memory_throw_cleanup(type: RunKonanTest) {
source = "runtime/memory/throw_cleanup.kt"
}
task memory_collect_cycles(type: RunKonanTest) {
goldValue = "42\n"
source = "runtime/memory/cycles0.kt"
}
task unit1(type: RunKonanTest) {
goldValue = "First\nkotlin.Unit\n"
source = "codegen/basics/unit1.kt"
@@ -906,26 +901,16 @@ task inline3(type: RunKonanTest) {
}
task inline4(type: RunKonanTest) {
goldValue = "1\n"
goldValue = "3\n"
source = "codegen/inline/inline4.kt"
}
//task inline5(type: RunKonanTest) {
// goldValue = "1\n"
// source = "codegen/inline/inline5.kt"
//}
task inline6(type: RunKonanTest) {
goldValue = "hello1\nhello2\nhello3\nhello4\n"
source = "codegen/inline/inline6.kt"
task inline5(type: RunKonanTest) {
goldValue = "33\n"
source = "codegen/inline/inline5.kt"
}
task inline7(type: RunKonanTest) {
goldValue = "1\n2\n3\n"
source = "codegen/inline/inline7.kt"
}
task inline8(type: RunKonanTest) {
goldValue = "5\n"
source = "codegen/inline/inline8.kt"
task inline9(type: RunKonanTest) {
goldValue = "hello\n6\n"
source = "codegen/inline/inline9.kt"
}
@@ -0,0 +1,12 @@
@Suppress("NOTHING_TO_INLINE")
inline fun foo(i2: Int, body: () -> Int): Int {
return i2 + body()
}
fun bar(i1: Int): Int {
return foo(i1) { 1 }
}
fun main(args: Array<String>) {
println(bar(1).toString())
}
@@ -9,5 +9,5 @@ fun bar(i1: Int, i2: Int): Int {
}
fun main(args: Array<String>) {
println(bar(1, 8).toString())
println(bar(3, 8).toString())
}
+7 -10
View File
@@ -1,16 +1,13 @@
// @Suppress("NOTHING_TO_INLINE")
fun foo(i4: Int, i5: Int): Int {
try {
return i4 / i5
} catch (e: Exception) {
return i4
}
@Suppress("NOTHING_TO_INLINE")
inline fun foo(i2: Int, body: () -> Int): Int {
return i2 + body()
}
fun bar(i1: Int, i2: Int, i3: Int): Int {
return i1 + foo(i2, i3)
fun bar(i1: Int): Int {
return foo(i1) { return 33 }
}
fun main(args: Array<String>) {
println(bar(1, 8, 0).toString())
println(bar(1).toString())
}
@@ -0,0 +1,17 @@
@Suppress("NOTHING_TO_INLINE")
inline fun foo(i3: Int, i4: Int): Int {
return i3 + i3 + i4
}
fun quiz(i: Int) : Int {
println("hello")
return i + 1
}
fun bar(i1: Int, i2: Int): Int {
return foo(quiz(i1), i2)
}
fun main(args: Array<String>) {
println(bar(1, 2).toString())
}