SPIRV-Tools/test
Steven Perron e065cc208f
Keep decorations when replacing loads in access-chain-convert. (#1829)
In local-access-chain-convert, we replace loads by load the entire
variable, then doing the extract.  The extract will have the same value
as the load.  However, if the load has a decoration on it, the
decoration is lost because we do not copy any them to the new id.

This is fixed by rewritting the load into the extract and keeping the
same result id.

This change has the effect that we do not call DCEInst on the loads
because the load is not being deleted, but replaced.  This could leave
OpAccessChain instructions around that are not used.  This is not a
problem for -O and -Os.  They run local_single_*_elim passes and then
dead code elimination.  The dce will remove the unused access chains,
and the load elimination passes work even if there are unused access
chains.  I have added test to them to ensure they will not loss
opportunities.

Fixes #1787.
2018-08-15 09:14:21 -04:00
..
comp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
fuzzers Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
link Fixup readabilty/inheritance warnings (#1805) 2018-08-07 09:10:03 -04:00
opt Keep decorations when replacing loads in access-chain-convert. (#1829) 2018-08-15 09:14:21 -04:00
scripts Added --compact-ids to /tools/opt 2017-04-20 10:54:39 -04:00
stats Remove unused stats maps and parameters (#1828) 2018-08-13 16:45:39 -04:00
util Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
val Validate correct opcode uses of OpFunction 2018-08-14 10:13:06 -04:00
assembly_context_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
binary_parse_test.cpp Remove source/message.h (#1838) 2018-08-14 15:41:21 -04:00
binary_strnlen_s_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
binary_to_text_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
binary_to_text.literal_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
bit_stream.cpp Move bit_stream, move_to_front and huffman_codec. (#1833) 2018-08-14 09:52:05 -04:00
c_interface_test.cpp Remove source/message.h (#1838) 2018-08-14 15:41:21 -04:00
CMakeLists.txt Move bit_stream, move_to_front and huffman_codec. (#1833) 2018-08-14 09:52:05 -04:00
comment_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
cpp_interface_test.cpp Validate the input to Optimizer::Run (#1799) 2018-08-08 11:16:19 -04:00
diagnostic_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
enum_set_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
enum_string_mapping_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
ext_inst.debuginfo_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
ext_inst.glsl_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
ext_inst.opencl_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
fix_word_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
generator_magic_number_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
hex_float_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
huffman_codec.cpp Move bit_stream, move_to_front and huffman_codec. (#1833) 2018-08-14 09:52:05 -04: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
move_to_front_test.cpp Move bit_stream, move_to_front and huffman_codec. (#1833) 2018-08-14 09:52:05 -04:00
name_mapper_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
named_id_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
opcode_make_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
opcode_require_capabilities_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
opcode_split_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
opcode_table_get_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
operand_capabilities_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
operand_pattern_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
operand_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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
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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
test_fixture.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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 source/message.h (#1838) 2018-08-14 15:41:21 -04:00
text_start_new_inst_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.annotation_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.barrier_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.constant_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.control_flow_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.debug_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.device_side_enqueue_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.extension_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.function_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.group_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.image_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.literal_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
text_to_binary.memory_test.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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