diff options
Diffstat (limited to 'source/slang/slang-ir-peephole.cpp')
| -rw-r--r-- | source/slang/slang-ir-peephole.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/source/slang/slang-ir-peephole.cpp b/source/slang/slang-ir-peephole.cpp index d7c3c6bda..d4369da7a 100644 --- a/source/slang/slang-ir-peephole.cpp +++ b/source/slang/slang-ir-peephole.cpp @@ -958,8 +958,14 @@ struct PeepholeContext : InstPassBase } case kIROp_TypeEquals: { - auto left = inst->getOperand(0)->getDataType(); - auto right = inst->getOperand(1)->getDataType(); + auto getTypeFromOperand = [](IRInst* operand) -> IRType* + { + if (as<IRTypeType>(operand->getFullType()) || !operand->getFullType()) + return (IRType*)operand; + return operand->getFullType(); + }; + auto left = getTypeFromOperand(inst->getOperand(0)); + auto right = getTypeFromOperand(inst->getOperand(1)); if (isConcreteType(left) && isConcreteType(right)) { IRBuilder builder(module); |
