From d01e28a49b47c9fadf2b764a74f318e3f95061e5 Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 30 Mar 2023 11:41:54 -0700 Subject: Fix autodiff pass duplicates exported functions. (#2759) Co-authored-by: Yong He --- source/slang/slang-ir-util.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'source/slang/slang-ir-util.cpp') diff --git a/source/slang/slang-ir-util.cpp b/source/slang/slang-ir-util.cpp index bff80392f..c5cebb8b5 100644 --- a/source/slang/slang-ir-util.cpp +++ b/source/slang/slang-ir-util.cpp @@ -582,6 +582,32 @@ void sortBlocksInFunc(IRGlobalValueWithCode* func) block->insertAtEnd(func); } +void removeLinkageDecorations(IRGlobalValueWithCode* func) +{ + List toRemove; + for (auto inst : func->getDecorations()) + { + switch (inst->getOp()) + { + case kIROp_ImportDecoration: + case kIROp_ExportDecoration: + case kIROp_ExternCppDecoration: + case kIROp_PublicDecoration: + case kIROp_KeepAliveDecoration: + case kIROp_DllImportDecoration: + case kIROp_CudaDeviceExportDecoration: + case kIROp_DllExportDecoration: + case kIROp_HLSLExportDecoration: + toRemove.add(inst); + break; + default: + break; + } + } + for (auto inst : toRemove) + inst->removeAndDeallocate(); +} + void setInsertBeforeOrdinaryInst(IRBuilder* builder, IRInst* inst) { if (as(inst)) -- cgit v1.2.3