1 // 2 // Copyright 2002 The ANGLE Project Authors. All rights reserved. 3 // Use of this source code is governed by a BSD-style license that can be 4 // found in the LICENSE file. 5 // 6 // PruneNoOps.h: The PruneNoOps function prunes: 7 // 1. Empty declarations "int;". Empty declarators will be pruned as well, so for example: 8 // int , a; 9 // is turned into 10 // int a; 11 // 2. Literal statements: "1.0;". The ESSL output doesn't define a default precision for float, 12 // so float literal statements would end up with no precision which is invalid ESSL. 13 // 3. Statements after discard, return, break and continue. 14 // 4. Switch statements over a constant, where no case matches the constant 15 16 #ifndef COMPILER_TRANSLATOR_TREEOPS_PRUNENOOPS_H_ 17 #define COMPILER_TRANSLATOR_TREEOPS_PRUNENOOPS_H_ 18 19 #include "common/angleutils.h" 20 21 namespace sh 22 { 23 class TCompiler; 24 class TIntermBlock; 25 class TSymbolTable; 26 27 [[nodiscard]] bool PruneNoOps(TCompiler *compiler, TIntermBlock *root, TSymbolTable *symbolTable); 28 } // namespace sh 29 30 #endif // COMPILER_TRANSLATOR_TREEOPS_PRUNENOOPS_H_ 31