summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-link.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-ir-link.cpp')
-rw-r--r--source/slang/slang-ir-link.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/source/slang/slang-ir-link.cpp b/source/slang/slang-ir-link.cpp
index c46c57043..8ba1f354d 100644
--- a/source/slang/slang-ir-link.cpp
+++ b/source/slang/slang-ir-link.cpp
@@ -302,6 +302,7 @@ IRInst* IRSpecContext::maybeCloneValue(IRInst* originalValue)
case kIROp_GlobalGenericParam:
case kIROp_WitnessTable:
case kIROp_InterfaceType:
+ case kIROp_SymbolAlias:
return cloneGlobalValue(this, originalValue);
case kIROp_BoolLit:
@@ -346,7 +347,6 @@ IRInst* IRSpecContext::maybeCloneValue(IRInst* originalValue)
return builder->getVoidValue();
}
break;
-
default:
{
// In the default case, assume that we have some sort of "hoistable"
@@ -1411,7 +1411,10 @@ IRInst* cloneInst(
builder,
cast<IRGlobalGenericParam>(originalInst),
originalValues);
-
+ case kIROp_SymbolAlias:
+ // If we encounter a symbol alias, we want to clone
+ // the value it refers to instead of the alias itself.
+ return context->maybeCloneValue(cast<IRSymbolAlias>(originalInst)->getOperand(0));
default:
break;
}