summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-ssa.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-ir-ssa.cpp')
-rw-r--r--source/slang/slang-ir-ssa.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/source/slang/slang-ir-ssa.cpp b/source/slang/slang-ir-ssa.cpp
index 48cf2976f..18eba677e 100644
--- a/source/slang/slang-ir-ssa.cpp
+++ b/source/slang/slang-ir-ssa.cpp
@@ -379,11 +379,18 @@ static void cloneRelevantDecorations(
break;
case kIROp_PreciseDecoration:
- case kIROp_NameHintDecoration:
// Copy these decorations if the target doesn't already have them,
// but don't make duplicate decorations on the target.
//
- if( !val->findDecorationImpl(decoration->getOp()) )
+ if (!val->findDecorationImpl(decoration->getOp()))
+ {
+ cloneDecoration(nullptr, decoration, val, var->getModule());
+ }
+ break;
+ case kIROp_NameHintDecoration:
+ // If the target already contains a linkage decoration, don't add
+ // a name decoration to avoid issues with emit logic.
+ if (!val->findDecorationImpl(decoration->getOp()) && !val->findDecoration<IRLinkageDecoration>())
{
cloneDecoration(nullptr, decoration, val, var->getModule());
}