diff options
Diffstat (limited to 'source/slang/slang-ir-validate.cpp')
| -rw-r--r-- | source/slang/slang-ir-validate.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/source/slang/slang-ir-validate.cpp b/source/slang/slang-ir-validate.cpp index 03db96ac5..d5c0aa432 100644 --- a/source/slang/slang-ir-validate.cpp +++ b/source/slang/slang-ir-validate.cpp @@ -186,6 +186,28 @@ namespace Slang if (pp == operandParent) return; } + + // We allow out-of-order def-use in global scope. + bool allInGlobalScope = inst->getParent() && inst->getParent()->getOp() == kIROp_Module; + if (allInGlobalScope) + { + for (UInt i = 0; i < inst->getOperandCount(); i++) + { + auto op = inst->getOperand(i); + if (!op) + continue; + if (!op->getParent()) + continue; + if (op->getParent()->getOp() != kIROp_Module) + { + allInGlobalScope = false; + break; + } + } + } + if (allInGlobalScope) + return; + // // We failed to find `operandParent` while walking the ancestors of `inst`, // so something had gone wrong. |
