1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
llvm-mirror/utils
Djordje Todorovic c793732c01 [RemoveRedundantDebugValues] Add a Pass that removes redundant DBG_VALUEs
This new MIR pass removes redundant DBG_VALUEs.

After the register allocator is done, more precisely, after
the Virtual Register Rewriter, we end up having duplicated
DBG_VALUEs, since some virtual registers are being rewritten
into the same physical register as some of existing DBG_VALUEs.
Each DBG_VALUE should indicate (at least before the LiveDebugValues)
variables assignment, but it is being clobbered for function
parameters during the SelectionDAG since it generates new DBG_VALUEs
after COPY instructions, even though the parameter has no assignment.
For example, if we had a DBG_VALUE $regX as an entry debug value
representing the parameter, and a COPY and after the COPY,
DBG_VALUE $virt_reg, and after the virtregrewrite the $virt_reg gets
rewritten into $regX, we'd end up having redundant DBG_VALUE.

This breaks the definition of the DBG_VALUE since some analysis passes
might be built on top of that premise..., and this patch tries to fix
the MIR with the respect to that.

This first patch performs bacward scan, by trying to detect a sequence of
consecutive DBG_VALUEs, and to remove all DBG_VALUEs describing one
variable but the last one:

For example:

(1) DBG_VALUE $edi, !"var1", ...
(2) DBG_VALUE $esi, !"var2", ...
(3) DBG_VALUE $edi, !"var1", ...
 ...

in this case, we can remove (1).

By combining the forward scan that will be introduced in the next patch
(from this stack), by inspecting the statistics, the RemoveRedundantDebugValues
removes 15032 instructions by using gdb-7.11 as a testbed.

Differential Revision: https://reviews.llvm.org/D105279
2021-07-14 04:29:42 -07:00
..
benchmark [various] Remove or use variables which are unused but set. 2021-06-01 15:38:48 -07:00
bugpoint
count
crosstool
docker
emacs
FileCheck
fpcmp
gdb-scripts
git
gn [RemoveRedundantDebugValues] Add a Pass that removes redundant DBG_VALUEs 2021-07-14 04:29:42 -07:00
jedit
kate
KillTheDoctor
lint
lit [lit] Extend --xfail/LIT_XFAIL to take full test name 2021-07-01 15:46:37 -04:00
llvm-lit
llvm-locstats
LLVMVisualizers
Misc
not
PerfectShuffle
release Add LLDB in release binaries by default 2021-06-04 11:57:00 +05:00
Reviewing
sanitizers
TableGen [Attributes] Determine attribute properties from TableGen data 2021-07-12 22:13:38 +02:00
Target/ARM
testgen
textmate
unittest Revert "Revert "Temporarily do not drop volatile stores before unreachable"" 2021-07-09 11:44:34 -04:00
UpdateTestChecks [UpdateCCTestChecks] Support --check-globals 2021-06-25 13:17:56 -04:00
valgrind
vim [Utils][vim] Add missing highlights for fast-math flags 2021-06-22 09:39:15 +01:00
vscode [Utils] Add missing freeze and poison keyword highlights 2021-06-14 09:21:26 +09:00
yaml-bench
abtest.py
add_argument_names.py
bisect
bisect-skip-count
bugpoint_gisel_reducer.py
check_ninja_deps.py
check-each-file
chunk-print-before-all.py
clang-parse-diagnostics-file
codegen-diff
collect_and_build_with_pgo.py
convert-constraint-log-to-z3.py
countloc.sh
create_ladder_graph.py
demangle_tree.py
DSAclean.py
DSAextract.py
extract_symbols.py
extract_vplan.py
extract-section.py
findmisopt
findoptdiff
findsym.pl
GenLibDeps.pl
GetSourceVersion
getsrcs.sh
indirect_calls.py
lldbDataFormatters.py
llvm-compilers-check
llvm-gisel-cov.py
llvm-native-gxx
llvm-original-di-preservation.py
llvm.grm
llvmdo
llvmgrep
merge-stats.py
prepare-code-coverage-artifact.py
remote-exec.py
revert_checker_test.py utils: add a revert checker 2021-07-07 14:20:01 -07:00
revert_checker.py utils: add a revert checker 2021-07-07 14:20:01 -07:00
schedcover.py
shuffle_fuzz.py
shuffle_select_fuzz_tester.py
sort_includes.py
sysroot.py
unicode-case-fold.py
update_analyze_test_checks.py [UpdateTestUtils] Print test filename when complaining about conflicting prefix 2021-06-20 14:12:39 +03:00
update_cc_test_checks.py [UpdateCCTestChecks] Support --check-globals 2021-06-25 13:17:56 -04:00
update_llc_test_checks.py [UpdateTestUtils] Print test filename when complaining about conflicting prefix 2021-06-20 14:12:39 +03:00
update_mca_test_checks.py
update_mir_test_checks.py
update_test_checks.py [UpdateTestUtils] Print test filename when complaining about conflicting prefix 2021-06-20 14:12:39 +03:00
update_test_prefix.py
UpdateCMakeLists.pl
wciia.py