From 8ed6c1a06ccc94d3673f9a63b3335d146795ee49 Mon Sep 17 00:00:00 2001 From: Igor Chevdar Date: Mon, 31 Oct 2022 08:51:58 +0200 Subject: [PATCH] [K/N][optmz] Fixed bug with losing a part of the call graph The bug might have happened on a failed to have been devirtualized callsite as some of the potential callees might have been lost. The commit solves the issue rather conservatively by simply adding all those potential callees to the root set. --- .../kotlin/backend/konan/optimizations/CallGraphBuilder.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/CallGraphBuilder.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/CallGraphBuilder.kt index 346f2c1f4d8..98d4bd72fc4 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/CallGraphBuilder.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/optimizations/CallGraphBuilder.kt @@ -193,6 +193,12 @@ internal class CallGraphBuilder( else { val callSite = CallGraphNode.CallSite(call, true, call.callee) callGraph.addEdge(symbol, callSite) + + allPossibleCallees.forEach { + val callee = moduleDFG.functions[it] + if (callee != null) + functionStack.push(HandleFunctionParams(null, callee)) + } } } }