diff options
author | Shahbaz Youssefi <syoussefi@chromium.org> | 2021-09-08 11:36:17 -0400 |
---|---|---|
committer | Angle LUCI CQ <angle-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2021-09-08 17:00:29 +0000 |
commit | 8b2fd983e61aa3993a8272291c398247d7c279e0 (patch) | |
tree | 0666eff2431324d81242e8537801760310569d2f | |
parent | 9874be3119702aa77857105d2a3d67b97af45307 (diff) | |
download | angle-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.cpp | 6 |
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); } |