SPIRV-Tools/source/opt
Steven Perron c7fcb8c3b9
Process OpDecorateId in ADCE (#2761)
* Process OpDecorateId in ADCE

When there is an OpDecorateId instruction that is live,
the ids that is references must be kept live.  This change
adds them to the worklist.

I've also updated a validator check to allow OpDecorateId
to be able to apply to decoration groups.

Fixes #1759.

* Remove dead code.
2019-07-24 14:43:49 -04:00
..
aggressive_dead_code_elim_pass.cpp Process OpDecorateId in ADCE (#2761) 2019-07-24 14:43:49 -04:00
aggressive_dead_code_elim_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
basic_block.cpp Change implementation of post order CFG traversal (#2543) 2019-04-29 17:09:20 -04:00
basic_block.h Change implementation of post order CFG traversal (#2543) 2019-04-29 17:09:20 -04:00
block_merge_pass.cpp Extracted block merging functionality into its own utility file (#2325) 2019-01-25 10:57:13 +00:00
block_merge_pass.h Extracted block merging functionality into its own utility file (#2325) 2019-01-25 10:57:13 +00:00
block_merge_util.cpp Don't merge unreachable blocks (#2375) 2019-02-12 09:24:01 -05:00
block_merge_util.h Extracted block merging functionality into its own utility file (#2325) 2019-01-25 10:57:13 +00:00
build_module.cpp Move make_unique to source/util. (#1836) 2018-08-14 12:44:54 -04:00
build_module.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
ccp_pass.cpp Removing decorations when doing constant propagation. (#2444) 2019-03-13 10:40:49 -04:00
ccp_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
cfg_cleanup_pass.cpp Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05:00
cfg_cleanup_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
cfg.cpp Change implementation of post order CFG traversal (#2543) 2019-04-29 17:09:20 -04:00
cfg.h Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
CMakeLists.txt Remove Common Uniform Elimination Pass (#2731) 2019-07-12 11:02:10 -04:00
code_sink.cpp Handle instructions not in blocks in code sinking. (#2308) 2019-01-21 12:09:56 -05:00
code_sink.h Sink (#2284) 2019-01-17 15:56:36 -05:00
combine_access_chains.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
combine_access_chains.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
compact_ids_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
compact_ids_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
composite.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
composite.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
const_folding_rules.cpp Add folding rules for OpQuantizeToF16 (#2614) 2019-05-21 23:15:01 -07:00
const_folding_rules.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
constants.cpp Using the instruction folder to fold OpSpecConstantOp (#2598) 2019-05-21 12:45:00 -04:00
constants.h Remove extra semis (#2717) 2019-07-08 15:07:36 -04:00
copy_prop_arrays.cpp Fix up type mismatches. (#2545) 2019-05-02 09:31:46 -04:00
copy_prop_arrays.h Fix up type mismatches. (#2545) 2019-05-02 09:31:46 -04:00
dead_branch_elim_pass.cpp Change the order branches are simplified in dead branch elim (#2728) 2019-07-10 14:59:44 -04:00
dead_branch_elim_pass.h Change the order branches are simplified in dead branch elim (#2728) 2019-07-10 14:59:44 -04:00
dead_insert_elim_pass.cpp Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05:00
dead_insert_elim_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
dead_variable_elimination.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
dead_variable_elimination.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
decompose_initialized_variables_pass.cpp Add support for Private & Output to initializer decompose flag (#2537) 2019-04-25 16:24:32 -04:00
decompose_initialized_variables_pass.h Implement WebGPU->Vulkan initializer conversion for 'Function' variables (#2513) 2019-04-16 14:31:36 -04:00
decoration_manager.cpp Handle decorations better in some optimizations (#2716) 2019-07-10 11:37:16 -04:00
decoration_manager.h Handle decorations better in some optimizations (#2716) 2019-07-10 11:37:16 -04:00
def_use_manager.cpp Add base and core bindless validation instrumentation classes (#2014) 2018-11-08 13:54:54 -05:00
def_use_manager.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
dominator_analysis.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
dominator_analysis.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
dominator_tree.cpp Fix readbility/braces warnings (#1804) 2018-08-07 09:09:47 -04:00
dominator_tree.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
eliminate_dead_constant_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
eliminate_dead_constant_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
eliminate_dead_functions_pass.cpp Fixes #2358. Added to the reducer the ability to remove a function t… (#2361) 2019-02-08 16:20:29 +00:00
eliminate_dead_functions_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
eliminate_dead_functions_util.cpp Fixes #2358. Added to the reducer the ability to remove a function t… (#2361) 2019-02-08 16:20:29 +00:00
eliminate_dead_functions_util.h Fixes #2358. Added to the reducer the ability to remove a function t… (#2361) 2019-02-08 16:20:29 +00:00
eliminate_dead_members_pass.cpp Don't change type of input and output var in dead member elim (#2412) 2019-02-20 18:59:41 -05:00
eliminate_dead_members_pass.h Don't change type of input and output var in dead member elim (#2412) 2019-02-20 18:59:41 -05:00
feature_manager.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
feature_manager.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
fix_storage_class.cpp Fix up type mismatches. (#2545) 2019-05-02 09:31:46 -04:00
fix_storage_class.h Fix up type mismatches. (#2545) 2019-05-02 09:31:46 -04:00
flatten_decoration_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
flatten_decoration_pass.h Add testing framework for tools. 2018-08-17 15:03:14 -04:00
fold_spec_constant_op_and_composite_pass.cpp Add folding rules for OpQuantizeToF16 (#2614) 2019-05-21 23:15:01 -07:00
fold_spec_constant_op_and_composite_pass.h Using the instruction folder to fold OpSpecConstantOp (#2598) 2019-05-21 12:45:00 -04:00
fold.cpp Fix overflow when negating INT_MIN. (#2293) 2019-01-17 17:01:55 -05:00
fold.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
folding_rules.cpp Remove duplicates from list of interface IDs in OpEntryPoint instruction (#2449) 2019-03-13 15:46:31 -04:00
folding_rules.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
freeze_spec_constant_value_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
freeze_spec_constant_value_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
function.cpp Add pass to fix some invalid unreachable blocks for WebGPU (#2563) 2019-05-09 12:56:10 -04:00
function.h Add pass to fix some invalid unreachable blocks for WebGPU (#2563) 2019-05-09 12:56:10 -04:00
generate_webgpu_initializers_pass.cpp Implement WebGPU->Vulkan initializer conversion for 'Function' variables (#2513) 2019-04-16 14:31:36 -04:00
generate_webgpu_initializers_pass.h Implement WebGPU->Vulkan initializer conversion for 'Function' variables (#2513) 2019-04-16 14:31:36 -04:00
if_conversion.cpp Fix restrictions in if conversion (#1998) 2018-10-19 15:16:46 -04:00
if_conversion.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
inline_exhaustive_pass.cpp Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
inline_exhaustive_pass.h Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
inline_opaque_pass.cpp Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
inline_opaque_pass.h Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
inline_pass.cpp Revert "Do not inline OpKill Instructions (#2713)" (#2749) 2019-07-17 14:59:05 -04:00
inline_pass.h Revert "Do not inline OpKill Instructions (#2713)" (#2749) 2019-07-17 14:59:05 -04:00
inst_bindless_check_pass.cpp Bindless Instrument: Make init check depend solely on input_init_enabled (#2753) 2019-07-22 13:51:39 -04:00
inst_bindless_check_pass.h Bindless Instrument: Make init check depend solely on input_init_enabled (#2753) 2019-07-22 13:51:39 -04:00
instruction_list.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
instruction_list.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
instruction.cpp Document opt::Instruction::InsertBefore methods (#2751) 2019-07-18 11:37:28 -04:00
instruction.h Document opt::Instruction::InsertBefore methods (#2751) 2019-07-18 11:37:28 -04:00
instrument_pass.cpp Allow ray tracing shaders in inst bindle check pass. (#2733) 2019-07-15 16:24:42 -04:00
instrument_pass.h Instrument: Add version 2 of record formats (#2630) 2019-05-29 15:08:21 -04:00
ir_builder.h Upgrade modf and frexp (#2266) 2019-01-07 12:36:38 -05:00
ir_context.cpp Allow ray tracing shaders in inst bindle check pass. (#2733) 2019-07-15 16:24:42 -04:00
ir_context.h Add —preserve-bindings and —preserve-spec-constants (#2693) 2019-07-10 14:12:19 -04:00
ir_loader.cpp spirv-opt: Behave a bit better in the face of unknown instructions (#2487) 2019-04-05 13:36:42 -04:00
ir_loader.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
iterator.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
legalize_vector_shuffle_pass.cpp Implement WebGPU->Vulkan initializer conversion for 'Function' variables (#2513) 2019-04-16 14:31:36 -04:00
legalize_vector_shuffle_pass.h Implement WebGPU->Vulkan initializer conversion for 'Function' variables (#2513) 2019-04-16 14:31:36 -04:00
licm_pass.cpp In LICM don't place code between merge instruction and branch. (#2252) 2018-12-20 18:33:52 -05:00
licm_pass.h In LICM don't place code between merge instruction and branch. (#2252) 2018-12-20 18:33:52 -05:00
local_access_chain_convert_pass.cpp Whitelist SPV_GOOGLE_user_type. (#2673) 2019-06-19 12:18:13 -04:00
local_access_chain_convert_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
local_redundancy_elimination.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
local_redundancy_elimination.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
local_single_block_elim_pass.cpp Whitelist SPV_GOOGLE_user_type. (#2673) 2019-06-19 12:18:13 -04:00
local_single_block_elim_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
local_single_store_elim_pass.cpp Handle variable pointer in some optimizations (#2490) 2019-04-03 12:47:51 -04:00
local_single_store_elim_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
local_ssa_elim_pass.cpp Whitelist SPV_GOOGLE_user_type. (#2673) 2019-06-19 12:18:13 -04:00
local_ssa_elim_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
log.h Cast __LINE__ to size_t (#2661) 2019-06-07 13:06:42 -04:00
loop_dependence_helpers.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_dependence.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_dependence.h Remove extra semis (#2717) 2019-07-08 15:07:36 -04:00
loop_descriptor.cpp Fix memory leak in unrolling. (#2301) 2019-01-17 16:02:43 -05:00
loop_descriptor.h Fix memory leak in unrolling. (#2301) 2019-01-17 16:02:43 -05:00
loop_fission.cpp Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
loop_fission.h Add testing framework for tools. 2018-08-17 15:03:14 -04:00
loop_fusion_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_fusion_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_fusion.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_fusion.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_peeling.cpp Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
loop_peeling.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_unroller.cpp Fix memory leak in unrolling. (#2301) 2019-01-17 16:02:43 -05:00
loop_unroller.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
loop_unswitch_pass.cpp Don't fold specialized branches in loop unswitch (#2245) 2018-12-19 04:40:30 +00:00
loop_unswitch_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_utils.cpp Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
loop_utils.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
mem_pass.cpp Consider atomics that load when analyzing live stores in ADCE (#1956) (#1958) 2018-10-12 08:46:35 -04:00
mem_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
merge_return_pass.cpp Record correct dominators in merge return (#2760) 2019-07-24 13:56:54 -04:00
merge_return_pass.h Record correct dominators in merge return (#2760) 2019-07-24 13:56:54 -04:00
module.cpp Add option for the max id bound. (#1870) 2018-09-10 11:49:41 -04:00
module.h Add option for the max id bound. (#1870) 2018-09-10 11:49:41 -04:00
null_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
optimizer.cpp Remove Common Uniform Elimination Pass (#2731) 2019-07-12 11:02:10 -04:00
pass_manager.cpp Add option to validate after each pass (#2462) 2019-03-26 14:38:59 -04:00
pass_manager.h Add option to validate after each pass (#2462) 2019-03-26 14:38:59 -04:00
pass.cpp Fix clang-tidy warning about definition/declaration mismatch. (#2571) 2019-05-09 00:15:08 -04:00
pass.h Fix up type mismatches. (#2545) 2019-05-02 09:31:46 -04:00
passes.h Remove Common Uniform Elimination Pass (#2731) 2019-07-12 11:02:10 -04:00
pch_source_opt.cpp Enable precompiled headers for spirv-tools(-shared) and some unit tests (#2026) 2018-11-06 09:26:23 -05:00
pch_source_opt.h Enable precompiled headers for spirv-tools(-shared) and some unit tests (#2026) 2018-11-06 09:26:23 -05:00
private_to_local_pass.cpp Update priv-to-local for SPIR-V 1.4 (#2567) 2019-05-08 12:38:49 -04:00
private_to_local_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
process_lines_pass.cpp Add passes to propagate and eliminate redundant line instructions (#2027). (#2039) 2018-11-15 14:06:17 -05:00
process_lines_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
propagator.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
propagator.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
reduce_load_size.cpp Have replace load size handle extact with no index. (#2261) 2019-01-03 13:02:10 -05:00
reduce_load_size.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
redundancy_elimination.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
redundancy_elimination.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
reflect.h Add validation for SPV_NV_cooperative_matrix (#2404) 2019-02-25 17:43:11 -05:00
register_pressure.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
register_pressure.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
remove_duplicates_pass.cpp Linker: Better type comparison for OpTypeArray and OpTypeForwardPointer (#2580) 2019-05-29 16:12:02 -04:00
remove_duplicates_pass.h Linker: Better type comparison for OpTypeArray and OpTypeForwardPointer (#2580) 2019-05-29 16:12:02 -04:00
replace_invalid_opc.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
replace_invalid_opc.h Add testing framework for tools. 2018-08-17 15:03:14 -04:00
scalar_analysis_nodes.h Remove extra semis (#2717) 2019-07-08 15:07:36 -04:00
scalar_analysis_simplification.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
scalar_analysis.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
scalar_analysis.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
scalar_replacement_pass.cpp Handle id overflow in sroa better. (#2582) 2019-05-15 09:29:28 -04:00
scalar_replacement_pass.h Handle id overflow in sroa better. (#2582) 2019-05-15 09:29:28 -04:00
set_spec_constant_default_value_pass.cpp Move make_unique to source/util. (#1836) 2018-08-14 12:44:54 -04:00
set_spec_constant_default_value_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
simplification_pass.cpp Handle decorations better in some optimizations (#2716) 2019-07-10 11:37:16 -04:00
simplification_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
split_invalid_unreachable_pass.cpp Add pass to fix some invalid unreachable blocks for WebGPU (#2563) 2019-05-09 12:56:10 -04:00
split_invalid_unreachable_pass.h Add pass to fix some invalid unreachable blocks for WebGPU (#2563) 2019-05-09 12:56:10 -04:00
ssa_rewrite_pass.cpp SSA rewriter: Don't use trivial phis (#2757) 2019-07-23 17:59:30 -04:00
ssa_rewrite_pass.h SSA rewriter: Don't use trivial phis (#2757) 2019-07-23 17:59:30 -04:00
strength_reduction_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
strength_reduction_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
strip_atomic_counter_memory_pass.cpp Implement WebGPU->Vulkan initializer conversion for 'Function' variables (#2513) 2019-04-16 14:31:36 -04:00
strip_atomic_counter_memory_pass.h Implement WebGPU->Vulkan initializer conversion for 'Function' variables (#2513) 2019-04-16 14:31:36 -04:00
strip_debug_info_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
strip_debug_info_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
strip_reflect_info_pass.cpp Remove MemberDecorateStringGOOGLE during stript-refect. (#2021) 2018-10-30 16:17:35 -04:00
strip_reflect_info_pass.h Make the constant and type manager analyses. (#2250) 2018-12-20 18:00:05 +00:00
struct_cfg_analysis.cpp Handle nested breaks from switches. (#2624) 2019-05-27 16:28:14 -04:00
struct_cfg_analysis.h Handle nested breaks from switches. (#2624) 2019-05-27 16:28:14 -04:00
tree_iterator.h Rewrite include guards (#1793) 2018-08-03 08:05:33 -04:00
type_manager.cpp Optimizer: Handle array type with OpSpecConstantOp length (#2652) 2019-06-05 16:35:50 -04:00
type_manager.h Linker: Better type comparison for OpTypeArray and OpTypeForwardPointer (#2580) 2019-05-29 16:12:02 -04:00
types.cpp Remove extra semis (#2717) 2019-07-08 15:07:36 -04:00
types.h Remove extra semis (#2717) 2019-07-08 15:07:36 -04:00
unify_const_pass.cpp Move make_unique to source/util. (#1836) 2018-08-14 12:44:54 -04:00
unify_const_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
upgrade_memory_model.cpp Handle volatile memory semantics in upgrade (#2674) 2019-06-17 16:01:37 -04:00
upgrade_memory_model.h Handle volatile memory semantics in upgrade (#2674) 2019-06-17 16:01:37 -04:00
value_number_table.cpp Handle decorations better in some optimizations (#2716) 2019-07-10 11:37:16 -04:00
value_number_table.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
vector_dce.cpp Handle extract with no index in VDCE. (#2305) 2019-01-18 15:43:36 -05:00
vector_dce.h Handle extract with no index in VDCE. (#2305) 2019-01-18 15:43:36 -05:00
workaround1209.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
workaround1209.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00