SPV: Don't make MissingFunctionality() exit anymore.
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index c17b2b3..afea3bc 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -786,16 +786,14 @@
convertGlslangToSpvType(node->getType()), left, right,
node->getLeft()->getType().getBasicType());
+ builder.clearAccessChain();
if (! result) {
spv::MissingFunctionality("unknown glslang binary operation");
+ return true; // pick up a child as the place-holder result
} else {
- builder.clearAccessChain();
builder.setAccessChainRValue(result);
-
return false;
}
-
- return true;
}
bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TIntermUnary* node)
@@ -908,10 +906,8 @@
default:
spv::MissingFunctionality("unknown glslang unary");
- break;
+ return true; // pick up operand as placeholder result
}
-
- return true;
}
bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TIntermAggregate* node)
@@ -1251,7 +1247,7 @@
if (! result) {
spv::MissingFunctionality("unknown glslang aggregate");
- return true;
+ return true; // pick up a child as a placeholder operand
} else {
builder.clearAccessChain();
builder.setAccessChainRValue(result);