diff --git a/codeGenIntermediate/src/prog8/codegen/intermediate/IRUnusedCodeRemover.kt b/codeGenIntermediate/src/prog8/codegen/intermediate/IRUnusedCodeRemover.kt index 13cd3de75..c5d43b248 100644 --- a/codeGenIntermediate/src/prog8/codegen/intermediate/IRUnusedCodeRemover.kt +++ b/codeGenIntermediate/src/prog8/codegen/intermediate/IRUnusedCodeRemover.kt @@ -78,7 +78,6 @@ class IRUnusedCodeRemover( // check if asmsub is called from another asmsub irprog.blocks.asSequence().forEach { block -> block.children.filterIsInstance().forEach { sub -> - require(sub.asmChunk.next == null) { "asmsubs won't be pointing to their successor, otherwise we should do more work here" } if (block.forceOutput || block.library) linkedAsmSubs += sub if (sub.asmChunk.isNotEmpty()) { @@ -87,6 +86,13 @@ class IRUnusedCodeRemover( linkedAsmSubs += asmsub } } + val inlineAsm = sub.asmChunk.next as? IRInlineAsmChunk + if(inlineAsm!=null) { + allSubs.forEach { (label, asmsub) -> + if (inlineAsm.assembly.contains(label)) + linkedAsmSubs += asmsub + } + } } }