Clean up header dependency.
diff --git a/source/binary.cpp b/source/binary.cpp
index c8b7c38..689937f 100644
--- a/source/binary.cpp
+++ b/source/binary.cpp
@@ -20,13 +20,14 @@
#include <iterator>
#include <limits>
#include <unordered_map>
+#include <vector>
#include "assembly_grammar.h"
#include "diagnostic.h"
#include "ext_inst.h"
#include "opcode.h"
#include "operand.h"
-#include "spirv-tools/libspirv.h"
+#include "spirv/1.1/spirv.h"
#include "spirv_constant.h"
#include "spirv_endian.h"
diff --git a/source/binary.h b/source/binary.h
index dd48258..375e010 100644
--- a/source/binary.h
+++ b/source/binary.h
@@ -16,7 +16,6 @@
#define LIBSPIRV_BINARY_H_
#include "spirv-tools/libspirv.h"
-#include "spirv/1.1/spirv.h"
#include "spirv_definition.h"
// Functions
diff --git a/source/diagnostic.h b/source/diagnostic.h
index 72d537a..78f9a5b 100644
--- a/source/diagnostic.h
+++ b/source/diagnostic.h
@@ -16,7 +16,7 @@
#define LIBSPIRV_DIAGNOSTIC_H_
#include <sstream>
-#include <utility>
+#include <string>
#include "spirv-tools/libspirv.hpp"
diff --git a/source/libspirv.cpp b/source/libspirv.cpp
index 9afb9cb..02e87ea 100644
--- a/source/libspirv.cpp
+++ b/source/libspirv.cpp
@@ -14,7 +14,6 @@
#include "spirv-tools/libspirv.hpp"
-#include "message.h"
#include "table.h"
namespace spvtools {
diff --git a/source/message.h b/source/message.h
index 1489090..60f5d56 100644
--- a/source/message.h
+++ b/source/message.h
@@ -17,7 +17,7 @@
#include <string>
-#include "spirv-tools/libspirv.hpp"
+#include "spirv-tools/libspirv.h"
namespace spvtools {
diff --git a/source/opt/build_module.h b/source/opt/build_module.h
index 1dc2c11..d396a3a 100644
--- a/source/opt/build_module.h
+++ b/source/opt/build_module.h
@@ -17,7 +17,6 @@
#include <memory>
#include <string>
-#include <vector>
#include "module.h"
#include "spirv-tools/libspirv.hpp"
diff --git a/source/opt/constants.h b/source/opt/constants.h
index 24574fc..d6199e8 100644
--- a/source/opt/constants.h
+++ b/source/opt/constants.h
@@ -15,8 +15,8 @@
#ifndef LIBSPIRV_OPT_CONSTANTS_H_
#define LIBSPIRV_OPT_CONSTANTS_H_
-#include <cassert>
#include <memory>
+#include <utility>
#include <vector>
#include "make_unique.h"
diff --git a/source/opt/def_use_manager.cpp b/source/opt/def_use_manager.cpp
index 19178eb..2d0e79a 100644
--- a/source/opt/def_use_manager.cpp
+++ b/source/opt/def_use_manager.cpp
@@ -14,11 +14,7 @@
#include "def_use_manager.h"
-#include <functional>
-
-#include "instruction.h"
#include "log.h"
-#include "module.h"
#include "reflect.h"
namespace spvtools {
diff --git a/source/opt/def_use_manager.h b/source/opt/def_use_manager.h
index 41c405a..cd779d5 100644
--- a/source/opt/def_use_manager.h
+++ b/source/opt/def_use_manager.h
@@ -17,12 +17,11 @@
#include <list>
#include <unordered_map>
-#include <utility>
#include <vector>
#include "instruction.h"
-#include "message.h"
#include "module.h"
+#include "spirv-tools/libspirv.hpp"
namespace spvtools {
namespace opt {
diff --git a/source/opt/fold_spec_constant_op_and_composite_pass.cpp b/source/opt/fold_spec_constant_op_and_composite_pass.cpp
index 0170dcb..8424814 100644
--- a/source/opt/fold_spec_constant_op_and_composite_pass.cpp
+++ b/source/opt/fold_spec_constant_op_and_composite_pass.cpp
@@ -14,10 +14,9 @@
#include "fold_spec_constant_op_and_composite_pass.h"
+#include <algorithm>
#include <initializer_list>
-#include <memory>
#include <tuple>
-#include <unordered_map>
#include "constants.h"
#include "make_unique.h"
@@ -249,6 +248,20 @@
type_mgr_(nullptr),
id_to_const_val_() {}
+Pass::Status FoldSpecConstantOpAndCompositePass::Process(ir::Module* module) {
+ Initialize(module);
+ return ProcessImpl(module);
+}
+
+void FoldSpecConstantOpAndCompositePass::Initialize(ir::Module* module) {
+ type_mgr_.reset(new analysis::TypeManager(consumer(), *module));
+ def_use_mgr_.reset(new analysis::DefUseManager(consumer(), module));
+ for (const auto& id_def : def_use_mgr_->id_to_defs()) {
+ max_id_ = std::max(max_id_, id_def.first);
+ }
+ module_ = module;
+};
+
Pass::Status FoldSpecConstantOpAndCompositePass::ProcessImpl(
ir::Module* module) {
bool modified = false;
diff --git a/source/opt/fold_spec_constant_op_and_composite_pass.h b/source/opt/fold_spec_constant_op_and_composite_pass.h
index 8bca3e5..6e2eea1 100644
--- a/source/opt/fold_spec_constant_op_and_composite_pass.h
+++ b/source/opt/fold_spec_constant_op_and_composite_pass.h
@@ -15,7 +15,6 @@
#ifndef LIBSPIRV_OPT_FOLD_SPEC_CONSTANT_OP_AND_COMPOSITE_PASS_H_
#define LIBSPIRV_OPT_FOLD_SPEC_CONSTANT_OP_AND_COMPOSITE_PASS_H_
-#include <algorithm>
#include <memory>
#include <unordered_map>
#include <vector>
@@ -35,22 +34,13 @@
FoldSpecConstantOpAndCompositePass();
const char* name() const override { return "fold-spec-const-op-composite"; }
- Status Process(ir::Module* module) override {
- Initialize(module);
- return ProcessImpl(module);
- };
+
+ Status Process(ir::Module* module) override;
private:
// Initializes the type manager, def-use manager and get the maximal id used
// in the module.
- void Initialize(ir::Module* module) {
- type_mgr_.reset(new analysis::TypeManager(consumer(), *module));
- def_use_mgr_.reset(new analysis::DefUseManager(consumer(), module));
- for (const auto& id_def : def_use_mgr_->id_to_defs()) {
- max_id_ = std::max(max_id_, id_def.first);
- }
- module_ = module;
- };
+ void Initialize(ir::Module* module);
// The real entry of processing. Iterates through the types-constants-globals
// section of the given module, finds the Spec Constants defined with
diff --git a/source/opt/instruction.cpp b/source/opt/instruction.cpp
index 40e2951..bccac12 100644
--- a/source/opt/instruction.cpp
+++ b/source/opt/instruction.cpp
@@ -14,7 +14,6 @@
#include "instruction.h"
-#include <cassert>
#include <initializer_list>
#include "reflect.h"
diff --git a/source/opt/ir_loader.h b/source/opt/ir_loader.h
index c5c7359..bcb55f1 100644
--- a/source/opt/ir_loader.h
+++ b/source/opt/ir_loader.h
@@ -19,9 +19,8 @@
#include "basic_block.h"
#include "instruction.h"
-#include "message.h"
#include "module.h"
-#include "spirv-tools/libspirv.h"
+#include "spirv-tools/libspirv.hpp"
namespace spvtools {
namespace ir {
diff --git a/source/opt/iterator.h b/source/opt/iterator.h
index ba25fea..0430638 100644
--- a/source/opt/iterator.h
+++ b/source/opt/iterator.h
@@ -15,6 +15,7 @@
#ifndef LIBSPIRV_OPT_ITERATOR_H_
#define LIBSPIRV_OPT_ITERATOR_H_
+#include <cstddef> // for ptrdiff_t
#include <iterator>
#include <memory>
#include <type_traits>
@@ -29,10 +30,9 @@
// std::vector<|ValueType|>.
template <typename ValueType, bool IsConst = false>
class UptrVectorIterator
- : public std::iterator<
- std::random_access_iterator_tag,
- typename std::conditional<IsConst, const ValueType, ValueType>::type,
- ptrdiff_t> {
+ : public std::iterator<std::random_access_iterator_tag,
+ typename std::conditional<IsConst, const ValueType,
+ ValueType>::type> {
public:
using super = std::iterator<
std::random_access_iterator_tag,
diff --git a/source/opt/log.h b/source/opt/log.h
index 0d5ce4b..717a362 100644
--- a/source/opt/log.h
+++ b/source/opt/log.h
@@ -20,7 +20,7 @@
#include <utility>
#include <vector>
-#include "message.h"
+#include "spirv-tools/libspirv.hpp"
// Asserts the given condition is true. Otherwise, sends a message to the
// consumer and exits the problem with failure code. Accepts the following
diff --git a/source/opt/pass.h b/source/opt/pass.h
index 7449bc1..6e5df74 100644
--- a/source/opt/pass.h
+++ b/source/opt/pass.h
@@ -15,10 +15,10 @@
#ifndef LIBSPIRV_OPT_PASS_H_
#define LIBSPIRV_OPT_PASS_H_
-#include <memory>
+#include <utility>
-#include "message.h"
#include "module.h"
+#include "spirv-tools/libspirv.hpp"
namespace spvtools {
namespace opt {
diff --git a/source/opt/pass_manager.h b/source/opt/pass_manager.h
index e1bdc7a..0bf29f7 100644
--- a/source/opt/pass_manager.h
+++ b/source/opt/pass_manager.h
@@ -19,10 +19,11 @@
#include <vector>
#include "log.h"
-#include "message.h"
#include "module.h"
#include "pass.h"
+#include "spirv-tools/libspirv.hpp"
+
namespace spvtools {
namespace opt {
diff --git a/source/opt/set_spec_constant_default_value_pass.cpp b/source/opt/set_spec_constant_default_value_pass.cpp
index 2e9f36f..d49e2f1 100644
--- a/source/opt/set_spec_constant_default_value_pass.cpp
+++ b/source/opt/set_spec_constant_default_value_pass.cpp
@@ -16,18 +16,15 @@
#include <cctype>
#include <cstring>
-#include <string>
#include <tuple>
-#include <unordered_map>
#include <vector>
-#include "spirv-tools/libspirv.h"
-#include "util/parse_number.h"
-
#include "def_use_manager.h"
#include "make_unique.h"
+#include "spirv-tools/libspirv.h"
#include "type_manager.h"
#include "types.h"
+#include "util/parse_number.h"
namespace spvtools {
namespace opt {
diff --git a/source/opt/type_manager.cpp b/source/opt/type_manager.cpp
index ce4b676..ed8a13c 100644
--- a/source/opt/type_manager.cpp
+++ b/source/opt/type_manager.cpp
@@ -12,11 +12,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include <algorithm>
+#include "type_manager.h"
+
+#include <utility>
#include "log.h"
#include "reflect.h"
-#include "type_manager.h"
namespace spvtools {
namespace opt {
diff --git a/source/opt/type_manager.h b/source/opt/type_manager.h
index 48fa212..fa04d80 100644
--- a/source/opt/type_manager.h
+++ b/source/opt/type_manager.h
@@ -18,9 +18,10 @@
#include <memory>
#include <unordered_map>
#include <unordered_set>
+#include <vector>
-#include "message.h"
#include "module.h"
+#include "spirv-tools/libspirv.hpp"
#include "types.h"
namespace spvtools {
diff --git a/source/table.cpp b/source/table.cpp
index 24ab520..8f85802 100644
--- a/source/table.cpp
+++ b/source/table.cpp
@@ -14,7 +14,7 @@
#include "table.h"
-#include <cstdlib>
+#include <utility>
spv_context spvContextCreate(spv_target_env env) {
switch (env) {
diff --git a/source/table.h b/source/table.h
index 6b86313..4b21587 100644
--- a/source/table.h
+++ b/source/table.h
@@ -19,7 +19,7 @@
#include "enum_set.h"
#include "message.h"
-#include "spirv-tools/libspirv.h"
+#include "spirv-tools/libspirv.hpp"
namespace libspirv {