1# Copyright (c) 2016 Google Inc.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#     http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15add_subdirectory(dominator_tree)
16add_subdirectory(loop_optimizations)
17
18add_spvtools_unittest(TARGET opt
19  SRCS aggressive_dead_code_elim_test.cpp
20       amd_ext_to_khr.cpp
21       analyze_live_input_test.cpp
22       assembly_builder_test.cpp
23       block_merge_test.cpp
24       c_interface_test.cpp
25       ccp_test.cpp
26       cfg_cleanup_test.cpp
27       cfg_test.cpp
28       code_sink_test.cpp
29       combine_access_chains_test.cpp
30       compact_ids_test.cpp
31       constants_test.cpp
32       constant_manager_test.cpp
33       control_dependence.cpp
34       convert_relaxed_to_half_test.cpp
35       convert_to_sampled_image_test.cpp
36       copy_prop_array_test.cpp
37       dataflow.cpp
38       dead_branch_elim_test.cpp
39       dead_insert_elim_test.cpp
40       dead_variable_elim_test.cpp
41       debug_info_manager_test.cpp
42       decoration_manager_test.cpp
43       def_use_test.cpp
44       desc_sroa_test.cpp
45       eliminate_dead_const_test.cpp
46       eliminate_dead_functions_test.cpp
47       eliminate_dead_io_components_test.cpp
48       eliminate_dead_member_test.cpp
49       eliminate_dead_output_stores_test.cpp
50       feature_manager_test.cpp
51       fix_func_call_arguments_test.cpp
52       fix_storage_class_test.cpp
53       flatten_decoration_test.cpp
54       fold_spec_const_op_composite_test.cpp
55       fold_test.cpp
56       freeze_spec_const_test.cpp
57       function_test.cpp
58       graphics_robust_access_test.cpp
59       if_conversion_test.cpp
60       inline_opaque_test.cpp
61       inline_test.cpp
62       insert_extract_elim_test.cpp
63       inst_bindless_check_test.cpp
64       inst_buff_addr_check_test.cpp
65       inst_debug_printf_test.cpp
66       instruction_list_test.cpp
67       instruction_test.cpp
68       interface_var_sroa_test.cpp
69       invocation_interlock_placement_test.cpp
70       interp_fixup_test.cpp
71       ir_builder.cpp
72       ir_context_test.cpp
73       ir_loader_test.cpp
74       iterator_test.cpp
75       line_debug_info_test.cpp
76       local_access_chain_convert_test.cpp
77       local_redundancy_elimination_test.cpp
78       local_single_block_elim.cpp
79       local_single_store_elim_test.cpp
80       local_ssa_elim_test.cpp
81       modify_maximal_reconvergence_test.cpp
82       module_test.cpp
83       module_utils.h
84       optimizer_test.cpp
85       pass_manager_test.cpp
86       pass_merge_return_test.cpp
87       pass_remove_duplicates_test.cpp
88       pass_utils.cpp
89       private_to_local_test.cpp
90       propagator_test.cpp
91       reduce_load_size_test.cpp
92       redundancy_elimination_test.cpp
93       remove_dontinline_test.cpp
94       remove_unused_interface_variables_test.cpp
95       register_liveness.cpp
96       relax_float_ops_test.cpp
97       replace_desc_array_access_using_var_index_test.cpp
98       replace_invalid_opc_test.cpp
99       scalar_analysis.cpp
100       scalar_replacement_test.cpp
101       set_spec_const_default_value_test.cpp
102       simplification_test.cpp
103       spread_volatile_semantics_test.cpp
104       strength_reduction_test.cpp
105       strip_debug_info_test.cpp
106       strip_nonsemantic_info_test.cpp
107       struct_cfg_analysis_test.cpp
108       switch_descriptorset_test.cpp
109       trim_capabilities_pass_test.cpp
110       type_manager_test.cpp
111       types_test.cpp
112       unify_const_test.cpp
113       upgrade_memory_model_test.cpp
114       utils_test.cpp pass_utils.cpp
115       value_table_test.cpp
116       vector_dce_test.cpp
117       workaround1209_test.cpp
118       wrap_opkill_test.cpp
119  LIBS SPIRV-Tools-opt
120  PCH_FILE pch_test_opt
121)
122if (NOT "${SPIRV_SKIP_TESTS}" AND TARGET gmock_main)
123  if (MSVC)
124    if (${MSVC_VERSION} LESS 1920)
125      # The VS 2017 debug build requires /bigobj on test_opt
126      # https://github.com/KhronosGroup/SPIRV-Tools/issues/5335
127      target_compile_options(test_opt PRIVATE /bigobj)
128    endif()
129  endif()
130endif()
131