// // Copyright 2020 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // RunAtTheBeginningOfShader.cpp: Add code to be run at the beginning of the shader. // void main() { body } // => // void main() // { // codeToRun // body // } // #include "compiler/translator/tree_util/RunAtTheBeginningOfShader.h" #include "compiler/translator/Compiler.h" #include "compiler/translator/IntermNode.h" #include "compiler/translator/SymbolTable.h" #include "compiler/translator/tree_util/FindMain.h" #include "compiler/translator/tree_util/IntermNode_util.h" #include "compiler/translator/tree_util/IntermTraverse.h" namespace sh { bool RunAtTheBeginningOfShader(TCompiler *compiler, TIntermBlock *root, TIntermNode *codeToRun) { TIntermFunctionDefinition *main = FindMain(root); main->getBody()->insertStatement(0, codeToRun); return compiler->validateAST(root); } } // namespace sh