SPIRV-Tools/source/opt
Steven Perron d693a83e36
Handle breaks from structured-ifs in DCE. (#1848)
* Handle breaks from structured-ifs in DCE.

dead code elimination assumes that are conditional branches except for
breaks and continues in loops will have an OpSelectionMerge before them.
That is not true when breaking out of a selection construct.

The fix is to look for breaks in selection constructs in the same place
we look for breaks and continues for loops.
2018-08-21 11:54:44 -04:00
..
aggressive_dead_code_elim_pass.cpp Handle breaks from structured-ifs in DCE. (#1848) 2018-08-21 11:54:44 -04:00
aggressive_dead_code_elim_pass.h Handle breaks from structured-ifs in DCE. (#1848) 2018-08-21 11:54:44 -04:00
basic_block.cpp Move make_unique to source/util. (#1836) 2018-08-14 12:44:54 -04:00
basic_block.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
block_merge_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
block_merge_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
ccp_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
cfg_cleanup_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
cfg_cleanup_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
cfg.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
cfg.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
CMakeLists.txt Move make_unique to source/util. (#1836) 2018-08-14 12:44:54 -04:00
combine_access_chains.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
combine_access_chains.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
common_uniform_elim_pass.cpp Fix readbility/braces warnings (#1804) 2018-08-07 09:09:47 -04:00
common_uniform_elim_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
const_folding_rules.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
constants.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
constants.h Move make_unique to source/util. (#1836) 2018-08-14 12:44:54 -04:00
copy_prop_arrays.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
copy_prop_arrays.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
dead_branch_elim_pass.cpp Have dead-branch-elim handle conditional exits from selections. (#1850) 2018-08-21 11:49:56 -04:00
dead_branch_elim_pass.h Have dead-branch-elim handle conditional exits from selections. (#1850) 2018-08-21 11:49:56 -04:00
dead_insert_elim_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
dead_insert_elim_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
dead_variable_elimination.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
dead_variable_elimination.h Add testing framework for tools. 2018-08-17 15:03:14 -04:00
decoration_manager.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
decoration_manager.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
def_use_manager.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
eliminate_dead_functions_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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
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 Move make_unique to source/util. (#1836) 2018-08-14 12:44:54 -04:00
fold_spec_constant_op_and_composite_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
fold.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
fold.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
folding_rules.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
function.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
if_conversion.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
if_conversion.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
inline_exhaustive_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
inline_exhaustive_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
inline_opaque_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
inline_opaque_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
inline_pass.cpp Use MakeUnique. (#1837) 2018-08-14 15:01:50 -04:00
inline_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
instruction.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
ir_builder.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
ir_context.cpp Fix readbility/braces warnings (#1804) 2018-08-07 09:09:47 -04:00
ir_context.h Use MakeUnique. (#1837) 2018-08-14 15:01:50 -04:00
ir_loader.cpp Use MakeUnique. (#1837) 2018-08-14 15:01:50 -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
licm_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
licm_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
local_access_chain_convert_pass.cpp Keep decorations when replacing loads in access-chain-convert. (#1829) 2018-08-15 09:14:21 -04:00
local_access_chain_convert_pass.h Keep decorations when replacing loads in access-chain-convert. (#1829) 2018-08-15 09:14:21 -04:00
local_redundancy_elimination.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
local_redundancy_elimination.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
local_single_block_elim_pass.cpp Keep decorations when replacing loads in access-chain-convert. (#1829) 2018-08-15 09:14:21 -04:00
local_single_block_elim_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
local_single_store_elim_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
local_single_store_elim_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
local_ssa_elim_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
local_ssa_elim_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
log.h Rewrite include guards (#1793) 2018-08-03 08:05:33 -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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_descriptor.cpp Move make_unique to source/util. (#1836) 2018-08-14 12:44:54 -04:00
loop_descriptor.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_fission.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_peeling.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_unroller.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_unroller.h Add testing framework for tools. 2018-08-17 15:03:14 -04:00
loop_unswitch_pass.cpp Fix readbility/braces warnings (#1804) 2018-08-07 09:09:47 -04:00
loop_unswitch_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_utils.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
loop_utils.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
mem_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
mem_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
merge_return_pass.cpp Move make_unique to source/util. (#1836) 2018-08-14 12:44:54 -04:00
merge_return_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
module.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
module.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
null_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
optimizer.cpp Add testing framework for tools. 2018-08-17 15:03:14 -04:00
pass_manager.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
pass_manager.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
passes.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
private_to_local_pass.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
private_to_local_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
reduce_load_size.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
remove_duplicates_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -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 Move make_unique to source/util. (#1836) 2018-08-14 12:44:54 -04:00
scalar_replacement_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
simplification_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
ssa_rewrite_pass.cpp Move make_unique to source/util. (#1836) 2018-08-14 12:44:54 -04:00
ssa_rewrite_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -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_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 Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
strip_reflect_info_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
tree_iterator.h Rewrite include guards (#1793) 2018-08-03 08:05:33 -04:00
type_manager.cpp Use MakeUnique. (#1837) 2018-08-14 15:01:50 -04:00
type_manager.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
types.cpp Use MakeUnique. (#1837) 2018-08-14 15:01:50 -04:00
types.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -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
value_number_table.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
value_number_table.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
vector_dce.cpp Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
vector_dce.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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