summaryrefslogtreecommitdiff
path: root/source/slang/slang-emit-spirv.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-emit-spirv.cpp')
-rw-r--r--source/slang/slang-emit-spirv.cpp28
1 files changed, 6 insertions, 22 deletions
diff --git a/source/slang/slang-emit-spirv.cpp b/source/slang/slang-emit-spirv.cpp
index 62e7d428b..0ba637978 100644
--- a/source/slang/slang-emit-spirv.cpp
+++ b/source/slang/slang-emit-spirv.cpp
@@ -3310,7 +3310,12 @@ struct SPIRVEmitContext
// Find phi arguments from incoming branch instructions that target `block`.
for (auto use = block->firstUse; use; use = use->nextUse)
{
- auto branchInst = use->getUser();
+ auto branchInst = as<IRUnconditionalBranch>(use->getUser());
+ if (!branchInst)
+ continue;
+ if (branchInst->getTargetBlock() != inst->getParent())
+ continue;
+
UInt argStartIndex = 0;
switch (branchInst->getOp())
{
@@ -4742,27 +4747,6 @@ struct SPIRVEmitContext
}
}
- void handleRequiredCapabilitiesImpl(IRInst* inst)
- {
- for (auto decoration : inst->getDecorations())
- {
- switch (decoration->getOp())
- {
- default:
- break;
- case kIROp_RequireSPIRVCapabilityDecoration:
- requireSPIRVCapability((SpvCapability)getIntVal(decoration->getOperand(0)));
- if (decoration->getOperandCount() == 2)
- {
- auto stringLit = as<IRStringLit>(decoration->getOperand(1));
- if (stringLit->getStringSlice().getLength())
- ensureExtensionDeclaration(stringLit->getStringSlice());
- }
- break;
- }
- }
- }
-
SPIRVEmitContext(IRModule* module, TargetRequest* target, DiagnosticSink* sink)
: SPIRVEmitSharedContext(module, target, sink)
, m_irModule(module)