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 
15 #ifndef COMPILER_TRANSLATOR_TREEOPS_PRUNENOOPS_H_
16 #define COMPILER_TRANSLATOR_TREEOPS_PRUNENOOPS_H_
17 
18 #include "common/angleutils.h"
19 
20 namespace sh
21 {
22 class TCompiler;
23 class TIntermBlock;
24 class TSymbolTable;
25 
26 ANGLE_NO_DISCARD bool PruneNoOps(TCompiler *compiler,
27                                  TIntermBlock *root,
28                                  TSymbolTable *symbolTable);
29 }  // namespace sh
30 
31 #endif  // COMPILER_TRANSLATOR_TREEOPS_PRUNENOOPS_H_
32