SPIRV-Tools/test
Steven Perron 6c7db9c630
Handle nested breaks from switches. (#2624)
* Handle nested breaks from switches.

There was a recent decision made to allow branches to the merge node of
a switch even if the switch is not the first enclosing construct.  They
can be generated by glslang from break statements in switches.

Dead branch elimination seems to be the only optimization that will
break because of this change, so I will update that optimizations.

The change made are:

- Track switches in structured cfg analysis.
- In Dead branch elimination:
  - Look for nested breaks that will require a switch instruction.
  - Rewrite, but don't delete, switchs that are required even if it
    could be replaced by an unconditional branch.
  - When looking for the first break, consider the merge of a switch
    as well.

See #2612.

* Fix variable names and comments.

* Add tests for the struct cfg analysis and switches.

* Fix typos in comments.
2019-05-27 16:28:14 -04:00
..
fuzzers Add fuzzer for spvBinaryParser (#2045) 2018-11-14 10:30:20 -05:00
link linker: Add tests for various type comparisons (#2613) 2019-05-24 15:40:28 -04:00
opt Handle nested breaks from switches. (#2624) 2019-05-27 16:28:14 -04:00
reduce reduce: Add two branch reduction passes (#2507) 2019-04-15 19:54:36 +01:00
scripts Added --compact-ids to /tools/opt 2017-04-20 10:54:39 -04:00
tools Support SPIR-V 1.4 (#2550) 2019-05-07 12:27:18 -04:00
util Reduce number of test targets (#2024) 2018-11-01 10:19:37 -04:00
val Allow arrays of out per-primitive builtins for mesh shaders (#2617) 2019-05-23 15:08:59 -04:00
assembly_context_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
assembly_format_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
binary_destroy_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
binary_endianness_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
binary_header_get_test.cpp Support SPIR-V 1.4 (#2550) 2019-05-07 12:27:18 -04:00
binary_parse_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
binary_strnlen_s_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
binary_to_text_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
binary_to_text.literal_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
c_interface_test.cpp Output disassembly line number for binary parse errors. (#2195) 2018-12-21 16:24:15 -05:00
CMakeLists.txt Remove MarkV and Stats code. (#2576) 2019-05-24 15:43:59 -04:00
comment_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
cpp_interface_test.cpp [val] Fixup id name output (#2158) 2018-12-03 17:01:30 -05:00
diagnostic_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
enum_set_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
enum_string_mapping_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
ext_inst.debuginfo_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
ext_inst.glsl_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
ext_inst.opencl_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
fix_word_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
generator_magic_number_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
hex_float_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
immediate_int_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
libspirv_macros_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
log_test.cpp Remove source/message.h (#1838) 2018-08-14 15:41:21 -04:00
name_mapper_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
named_id_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
opcode_make_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
opcode_require_capabilities_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
opcode_split_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
opcode_table_get_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
operand_capabilities_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
operand_pattern_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
operand_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
operand-class-test-coverage.csv Fix operand class test coverage table. 2016-09-23 11:58:25 -04:00
parse_number_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
pch_test.cpp Enable precompiled headers for spirv-tools(-shared) and some unit tests (#2026) 2018-11-06 09:26:23 -05:00
pch_test.h Enable precompiled headers for spirv-tools(-shared) and some unit tests (#2026) 2018-11-06 09:26:23 -05:00
preserve_numeric_ids_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
software_version_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
string_utils_test.cpp Move utils/ to spvtools::utils 2018-07-06 16:47:46 -04:00
target_env_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
test_fixture.h Fix leaks in tests (#2295) 2019-01-16 16:53:10 -05:00
text_advance_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_destroy_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_literal_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
text_start_new_inst_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
text_to_binary.annotation_test.cpp Support SPIR-V 1.4 (#2550) 2019-05-07 12:27:18 -04:00
text_to_binary.barrier_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.composite_test.cpp Support SPIR-V 1.4 (#2550) 2019-05-07 12:27:18 -04:00
text_to_binary.constant_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
text_to_binary.control_flow_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
text_to_binary.debug_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
text_to_binary.device_side_enqueue_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
text_to_binary.extension_test.cpp Support SPIR-V 1.4 (#2550) 2019-05-07 12:27:18 -04:00
text_to_binary.function_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
text_to_binary.group_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
text_to_binary.image_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
text_to_binary.literal_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.memory_test.cpp Support SPIR-V 1.4 (#2550) 2019-05-07 12:27:18 -04:00
text_to_binary.misc_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.mode_setting_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
text_to_binary.pipe_storage_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.reserved_sampling_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.subgroup_dispatch_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.type_declaration_test.cpp Remove use of deprecated googletest macro (#2286) 2019-01-29 18:56:52 -05:00
text_word_get_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
timer_test.cpp Move utils/ to spvtools::utils 2018-07-06 16:47:46 -04:00
unit_spirv.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
unit_spirv.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00