SPIRV-Tools/source/opt
Steven Perron 9d04f82bef
Ensure SROA gets the correct pointer type. (#2247)
We initially assumed that if the type manager returned the correct id
for the pointee type, that we would get the correct pointer type back,
but that is not true.  See the unit test added with this commit.  We
need to fall back to the linear search any time we are looking for a
pointer to a type that may not be unique.

At the same time, SROA considered an OpName on a variable to be a use of
the entire variable.  That has been fixed.

Fixes #2209.
2018-12-19 17:07:29 +00:00
..
aggressive_dead_code_elim_pass.cpp Invalidate the decoration manager at the start of ADCE. (#2189) 2018-12-10 13:24:33 -05:00
aggressive_dead_code_elim_pass.h Fix ADCE liveness to include all enclosing control structures. (#1975) 2018-10-16 08:00:07 -04:00
basic_block.cpp Keep analyses live in unrolling (#1929) 2018-09-26 17:36:27 -04:00
basic_block.h Add base and core bindless validation instrumentation classes (#2014) 2018-11-08 13:54:54 -05:00
block_merge_pass.cpp Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05:00
block_merge_pass.h Analyze uses for all instructions. (#1937) 2018-09-28 14:39:06 -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 Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05:00
ccp_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
cfg_cleanup_pass.cpp Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05:00
cfg_cleanup_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
cfg.cpp Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
cfg.h Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
CMakeLists.txt Update memory model (#1904) 2018-11-30 14:15:51 -05: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 Place load after OpPhi instructions in block. (#2246) 2018-12-19 15:18:22 +00: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 Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
constants.h Have the constant manager take ownership of constants. (#1866) 2018-08-27 09:53:47 -04:00
copy_prop_arrays.cpp Add a nullptr check to array copy propagation. (#1987) 2018-10-19 12:53:40 -04:00
copy_prop_arrays.h Fix erroneous uses of the type manager in copy-prop-arrays. (#1942) 2018-10-01 14:45:44 -04:00
dead_branch_elim_pass.cpp Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05:00
dead_branch_elim_pass.h Fix dead branch elim infinite loop. (#2009) 2018-10-24 09:10:30 -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 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 Invalidate the decoration manager at the start of ADCE. (#2189) 2018-12-10 13:24:33 -05:00
decoration_manager.h Invalidate the decoration manager at the start of ADCE. (#2189) 2018-12-10 13:24:33 -05: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 Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05: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 Have the constant manager take ownership of constants. (#1866) 2018-08-27 09:53:47 -04:00
fold_spec_constant_op_and_composite_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
fold.cpp Remove undefined behaviour when folding shifts. (#2157) 2018-12-04 10:04:02 -05:00
fold.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
folding_rules.cpp Fix folding of volatile store. (#2048) 2018-11-14 13:52:18 -05: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 Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
function.h Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
if_conversion.cpp Fix restrictions in if conversion (#1998) 2018-10-19 15:16:46 -04:00
if_conversion.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04: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 Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
inline_pass.h Handle id overflow in inlining. (#2196) 2018-12-18 19:34:03 +00:00
inst_bindless_check_pass.cpp Add base and core bindless validation instrumentation classes (#2014) 2018-11-08 13:54:54 -05:00
inst_bindless_check_pass.h Add missing overrides (#2041) 2018-11-12 15:11:32 -05: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 Fix Instruction::IsFloatingPointFoldingAllowed() 2018-11-14 15:25:51 -07:00
instruction.h New spirv-reduce reduction pass: operand to dominating id. (#2099) 2018-11-26 17:06:21 -05:00
instrument_pass.cpp Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05:00
instrument_pass.h Add missing overrides (#2041) 2018-11-12 15:11:32 -05:00
ir_builder.h Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
ir_context.cpp Invalidate the decoration manager at the start of ADCE. (#2189) 2018-12-10 13:24:33 -05:00
ir_context.h Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05: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 Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
licm_pass.h Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
local_access_chain_convert_pass.cpp Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05: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 Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05:00
local_single_block_elim_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
local_single_store_elim_pass.cpp Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05:00
local_single_store_elim_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
local_ssa_elim_pass.cpp Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05: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 Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
loop_descriptor.h Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -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 Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
loop_unroller.h Keep analyses live in unrolling (#1929) 2018-09-26 17:36:27 -04: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 Fix invalid OpPhi generated by merge-return. (#2172) 2018-12-07 14:10:30 -05:00
merge_return_pass.h Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05: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 Implement initial --webgpu-mode flag (#2217) 2018-12-18 15:10:34 -05: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 Don't inline recursive functions. (#2130) 2018-11-29 14:24:58 -05:00
pass.h Document in the context what happens with id overflow. (#2159) 2018-12-06 09:07:00 -05:00
passes.h Update memory model (#1904) 2018-11-30 14:15:51 -05: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 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
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 Add missing override to ProcessLinesPass 2018-11-19 19:24:48 -05: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 Recognize OpTypeAccelerationStructureNV as a type instruction (#2190) 2018-12-11 19:03:55 -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 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 Ensure SROA gets the correct pointer type. (#2247) 2018-12-19 17:07:29 +00:00
scalar_replacement_pass.h Don't scalarize spec constant sized arrays 2018-10-04 11:58:23 -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 SSA-rewriter: make sure phi entries are unique. (#2206) 2018-12-18 18:14:27 +00: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 Remove MemberDecorateStringGOOGLE during stript-refect. (#2021) 2018-10-30 16:17:35 -04:00
strip_reflect_info_pass.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
struct_cfg_analysis.cpp Check for unreachable blocks in merge-return. (#1966) 2018-10-10 15:18:15 -04:00
struct_cfg_analysis.h Check for unreachable blocks in merge-return. (#1966) 2018-10-10 15:18:15 -04:00
tree_iterator.h Rewrite include guards (#1793) 2018-08-03 08:05:33 -04:00
type_manager.cpp Recognize OpTypeAccelerationStructureNV as a type instruction (#2190) 2018-12-11 19:03:55 -05:00
type_manager.h Cleanup includes. (#1795) 2018-08-03 15:06:09 -04:00
types.cpp Recognize OpTypeAccelerationStructureNV as a type instruction (#2190) 2018-12-11 19:03:55 -05:00
types.h Recognize OpTypeAccelerationStructureNV as a type instruction (#2190) 2018-12-11 19:03:55 -05: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 Update memory model (#1904) 2018-11-30 14:15:51 -05:00
upgrade_memory_model.h Update memory model (#1904) 2018-11-30 14:15:51 -05: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