From cce08d95db5300cd9b1b6a0ac302b1ac0b4ccc15 Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Wed, 6 Dec 2023 21:48:56 +0100 Subject: [PATCH] unused subroutine warning only for main compilation module --- .../prog8/codegen/intermediate/IRUnusedCodeRemover.kt | 9 +++------ codeOptimizers/src/prog8/optimizer/UnusedCodeRemover.kt | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/codeGenIntermediate/src/prog8/codegen/intermediate/IRUnusedCodeRemover.kt b/codeGenIntermediate/src/prog8/codegen/intermediate/IRUnusedCodeRemover.kt index 5c5d14f01..72b525499 100644 --- a/codeGenIntermediate/src/prog8/codegen/intermediate/IRUnusedCodeRemover.kt +++ b/codeGenIntermediate/src/prog8/codegen/intermediate/IRUnusedCodeRemover.kt @@ -37,9 +37,9 @@ class IRUnusedCodeRemover( } } - irprog.st.allVariables().forEach { stVar-> - val initValue = stVar.onetimeInitializationArrayValue - if(initValue!=null && !initValue.isEmpty()) { + irprog.st.allVariables().forEach { variable -> + val initValue = variable.onetimeInitializationArrayValue + if(!initValue.isNullOrEmpty()) { if(initValue.any { it.addressOfSymbol?.startsWith(blockLabel)==true }) @@ -61,9 +61,6 @@ class IRUnusedCodeRemover( irprog.blocks.forEach { block -> block.children.filterIsInstance().reversed().forEach { sub -> if(sub.isEmpty()) { - if(!sub.position.file.startsWith(LIBRARYFILEPREFIX)) { - errors.warn("unused subroutine ${sub.label}", sub.position) - } block.children.remove(sub) irprog.st.removeTree(sub.label) numRemoved++ diff --git a/codeOptimizers/src/prog8/optimizer/UnusedCodeRemover.kt b/codeOptimizers/src/prog8/optimizer/UnusedCodeRemover.kt index a83eac02a..66f52ef16 100644 --- a/codeOptimizers/src/prog8/optimizer/UnusedCodeRemover.kt +++ b/codeOptimizers/src/prog8/optimizer/UnusedCodeRemover.kt @@ -99,7 +99,7 @@ class UnusedCodeRemover(private val program: Program, } return removals } - if(!subroutine.definingModule.isLibrary && !subroutine.hasBeenInlined) { + if(!subroutine.hasBeenInlined && subroutine.definingModule===program.toplevelModule) { errors.warn("unused subroutine '${subroutine.name}'", subroutine.position) } if(!subroutine.inline) {