diff options
Diffstat (limited to 'source/slang/slang-ir-link.cpp')
| -rw-r--r-- | source/slang/slang-ir-link.cpp | 7 |
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; } |
