├── .gitignore ├── CMakeLists.txt ├── LICENSE.md ├── README.md ├── assets ├── TechReport012022.pdf └── images │ └── ShortCircuitExample.png ├── link_script ├── llvm_test_suite_patch.patch ├── passes ├── CMakeLists.txt ├── DebugUtils.cpp ├── DebugUtils.h ├── FindLazyfiable.cpp ├── FindLazyfiable.h ├── Instrumentation.cpp ├── Instrumentation.h ├── Lazyfication.cpp ├── Lazyfication.h ├── ProgramSlice.cpp └── ProgramSlice.h ├── scripts └── aggregate_results.py ├── test ├── paper_example_input.txt ├── runAllTests.sh ├── test_callee_thunk_multiple_phi_uses.c ├── test_conditional_branch_with_only_one_successor_in_slice.c ├── test_if_and_else_branches_partially_in_slice.c ├── test_if_and_else_completely_not_in_slice.c ├── test_instrumentation_non_main_exit.c ├── test_instrumentation_should_instrument.c ├── test_instrumentation_use_tracking.c ├── test_paper_example.c ├── test_paper_example_with_alias_call.c ├── test_paper_example_with_alias_store_in_callee.c ├── test_paper_example_with_alias_write.c ├── test_paper_example_with_store_in_callee.c ├── test_paper_example_with_use.c ├── test_performance.c ├── test_presentation_example.c ├── test_return_address_local.c ├── test_should_maybe_optimize_inner_loop.c ├── test_slice_containing_for.c ├── test_slice_on_load_pointer.c ├── test_slice_on_safe_load_pointer.c ├── test_slice_with_empty_entry_block.c ├── test_struct_arg.c ├── test_struct_member_and_nested_conditionals.c ├── test_switch_with_all_cases_in_slice.c ├── test_switch_with_default_not_in_slice.c ├── test_switch_with_few_cases_in_slice.c ├── test_switch_with_not_all_successors_in_slice.c ├── test_switch_with_preceding_for_in_slice.c ├── test_thunk_use_is_phi_node.c └── test_unoptimizable_call_within_loop.c └── wyinstr.cpp /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/.gitignore -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/CMakeLists.txt -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/LICENSE.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/README.md -------------------------------------------------------------------------------- /assets/TechReport012022.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/assets/TechReport012022.pdf -------------------------------------------------------------------------------- /assets/images/ShortCircuitExample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/assets/images/ShortCircuitExample.png -------------------------------------------------------------------------------- /link_script: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/link_script -------------------------------------------------------------------------------- /llvm_test_suite_patch.patch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/llvm_test_suite_patch.patch -------------------------------------------------------------------------------- /passes/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/passes/CMakeLists.txt -------------------------------------------------------------------------------- /passes/DebugUtils.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/passes/DebugUtils.cpp -------------------------------------------------------------------------------- /passes/DebugUtils.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/passes/DebugUtils.h -------------------------------------------------------------------------------- /passes/FindLazyfiable.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/passes/FindLazyfiable.cpp -------------------------------------------------------------------------------- /passes/FindLazyfiable.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/passes/FindLazyfiable.h -------------------------------------------------------------------------------- /passes/Instrumentation.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/passes/Instrumentation.cpp -------------------------------------------------------------------------------- /passes/Instrumentation.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/passes/Instrumentation.h -------------------------------------------------------------------------------- /passes/Lazyfication.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/passes/Lazyfication.cpp -------------------------------------------------------------------------------- /passes/Lazyfication.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/passes/Lazyfication.h -------------------------------------------------------------------------------- /passes/ProgramSlice.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/passes/ProgramSlice.cpp -------------------------------------------------------------------------------- /passes/ProgramSlice.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/passes/ProgramSlice.h -------------------------------------------------------------------------------- /scripts/aggregate_results.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/scripts/aggregate_results.py -------------------------------------------------------------------------------- /test/paper_example_input.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/paper_example_input.txt -------------------------------------------------------------------------------- /test/runAllTests.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/runAllTests.sh -------------------------------------------------------------------------------- /test/test_callee_thunk_multiple_phi_uses.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_callee_thunk_multiple_phi_uses.c -------------------------------------------------------------------------------- /test/test_conditional_branch_with_only_one_successor_in_slice.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_conditional_branch_with_only_one_successor_in_slice.c -------------------------------------------------------------------------------- /test/test_if_and_else_branches_partially_in_slice.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_if_and_else_branches_partially_in_slice.c -------------------------------------------------------------------------------- /test/test_if_and_else_completely_not_in_slice.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_if_and_else_completely_not_in_slice.c -------------------------------------------------------------------------------- /test/test_instrumentation_non_main_exit.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_instrumentation_non_main_exit.c -------------------------------------------------------------------------------- /test/test_instrumentation_should_instrument.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_instrumentation_should_instrument.c -------------------------------------------------------------------------------- /test/test_instrumentation_use_tracking.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_instrumentation_use_tracking.c -------------------------------------------------------------------------------- /test/test_paper_example.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_paper_example.c -------------------------------------------------------------------------------- /test/test_paper_example_with_alias_call.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_paper_example_with_alias_call.c -------------------------------------------------------------------------------- /test/test_paper_example_with_alias_store_in_callee.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_paper_example_with_alias_store_in_callee.c -------------------------------------------------------------------------------- /test/test_paper_example_with_alias_write.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_paper_example_with_alias_write.c -------------------------------------------------------------------------------- /test/test_paper_example_with_store_in_callee.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_paper_example_with_store_in_callee.c -------------------------------------------------------------------------------- /test/test_paper_example_with_use.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_paper_example_with_use.c -------------------------------------------------------------------------------- /test/test_performance.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_performance.c -------------------------------------------------------------------------------- /test/test_presentation_example.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_presentation_example.c -------------------------------------------------------------------------------- /test/test_return_address_local.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_return_address_local.c -------------------------------------------------------------------------------- /test/test_should_maybe_optimize_inner_loop.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_should_maybe_optimize_inner_loop.c -------------------------------------------------------------------------------- /test/test_slice_containing_for.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_slice_containing_for.c -------------------------------------------------------------------------------- /test/test_slice_on_load_pointer.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_slice_on_load_pointer.c -------------------------------------------------------------------------------- /test/test_slice_on_safe_load_pointer.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_slice_on_safe_load_pointer.c -------------------------------------------------------------------------------- /test/test_slice_with_empty_entry_block.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_slice_with_empty_entry_block.c -------------------------------------------------------------------------------- /test/test_struct_arg.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_struct_arg.c -------------------------------------------------------------------------------- /test/test_struct_member_and_nested_conditionals.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_struct_member_and_nested_conditionals.c -------------------------------------------------------------------------------- /test/test_switch_with_all_cases_in_slice.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_switch_with_all_cases_in_slice.c -------------------------------------------------------------------------------- /test/test_switch_with_default_not_in_slice.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_switch_with_default_not_in_slice.c -------------------------------------------------------------------------------- /test/test_switch_with_few_cases_in_slice.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_switch_with_few_cases_in_slice.c -------------------------------------------------------------------------------- /test/test_switch_with_not_all_successors_in_slice.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_switch_with_not_all_successors_in_slice.c -------------------------------------------------------------------------------- /test/test_switch_with_preceding_for_in_slice.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_switch_with_preceding_for_in_slice.c -------------------------------------------------------------------------------- /test/test_thunk_use_is_phi_node.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_thunk_use_is_phi_node.c -------------------------------------------------------------------------------- /test/test_unoptimizable_call_within_loop.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/test/test_unoptimizable_call_within_loop.c -------------------------------------------------------------------------------- /wyinstr.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lac-dcc/wyvern/HEAD/wyinstr.cpp --------------------------------------------------------------------------------