aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShahbaz Youssefi <syoussefi@chromium.org>2021-09-08 11:36:17 -0400
committerAngle LUCI CQ <angle-scoped@luci-project-accounts.iam.gserviceaccount.com>2021-09-08 17:00:29 +0000
commit8b2fd983e61aa3993a8272291c398247d7c279e0 (patch)
tree0666eff2431324d81242e8537801760310569d2f
parent9874be3119702aa77857105d2a3d67b97af45307 (diff)
downloadangle-8b2fd983e61aa3993a8272291c398247d7c279e0.tar.gz
Translator: Fix validation failure in RemoveDynamicIndexing
This transformation adds function definitions to the tree after the fact, so function call validation is disabled until the transformation is complete. Bug: chromium:1246686 Change-Id: I40f77cb25cf272d5ebc42ece572371ce5161e819 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3148850 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
-rw-r--r--src/compiler/translator/tree_ops/RemoveDynamicIndexing.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/compiler/translator/tree_ops/RemoveDynamicIndexing.cpp b/src/compiler/translator/tree_ops/RemoveDynamicIndexing.cpp
index 9659bd91dc..39fdc206db 100644
--- a/src/compiler/translator/tree_ops/RemoveDynamicIndexing.cpp
+++ b/src/compiler/translator/tree_ops/RemoveDynamicIndexing.cpp
@@ -535,6 +535,10 @@ bool RemoveDynamicIndexingIf(DynamicIndexingNodeMatcher &&matcher,
TSymbolTable *symbolTable,
PerformanceDiagnostics *perfDiagnostics)
{
+ // This transformation adds function declarations after the fact and so some validation is
+ // momentarily disabled.
+ bool enableValidateFunctionCall = compiler->disableValidateFunctionCall();
+
RemoveDynamicIndexingTraverser traverser(std::move(matcher), symbolTable, perfDiagnostics);
do
{
@@ -551,6 +555,8 @@ bool RemoveDynamicIndexingIf(DynamicIndexingNodeMatcher &&matcher,
// TIntermLValueTrackingTraverser, and creates intricacies that are not easily apparent from a
// superficial reading of the code.
traverser.insertHelperDefinitions(root);
+
+ compiler->restoreValidateFunctionCall(enableValidateFunctionCall);
return compiler->validateAST(root);
}