summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/CodeGen.cpp
diff options
context:
space:
mode:
authorMatthias Braun <matze@braunis.de>2016-04-28 03:07:16 +0000
committerMatthias Braun <matze@braunis.de>2016-04-28 03:07:16 +0000
commitfbe85ae12e03cc95f0ae34cce8357f9cb22f0157 (patch)
treea541ddb6ce4822cfdd52a285408a55f750d64dc7 /llvm/lib/CodeGen/CodeGen.cpp
parent39d1fad55484af74f9132bb454fd0b7dab08a53b (diff)
downloadbcm5719-llvm-fbe85ae12e03cc95f0ae34cce8357f9cb22f0157.tar.gz
bcm5719-llvm-fbe85ae12e03cc95f0ae34cce8357f9cb22f0157.zip
CodeGen: Add DetectDeadLanes pass.
The DetectDeadLanes pass performs a dataflow analysis of used/defined subregister lanes across COPY instructions and instructions that will get lowered to copies. It detects dead definitions and uses reading undefined values which are obscured by COPY and subregister usage. These dead definitions cause trouble in the register coalescer which cannot deal with definitions suddenly becoming dead after coalescing COPY instructions. For now the pass only adds dead and undef flags to machine operands. It should be possible to extend it in the future to remove the dead instructions and redo the analysis for the affected virtual registers. Differential Revision: http://reviews.llvm.org/D18427 llvm-svn: 267851
Diffstat (limited to 'llvm/lib/CodeGen/CodeGen.cpp')
-rw-r--r--llvm/lib/CodeGen/CodeGen.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/CodeGen.cpp b/llvm/lib/CodeGen/CodeGen.cpp
index 7ab69d7c326..d604fcfff57 100644
--- a/llvm/lib/CodeGen/CodeGen.cpp
+++ b/llvm/lib/CodeGen/CodeGen.cpp
@@ -24,6 +24,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
initializeBranchFolderPassPass(Registry);
initializeCodeGenPreparePass(Registry);
initializeDeadMachineInstructionElimPass(Registry);
+ initializeDetectDeadLanesPass(Registry);
initializeDwarfEHPreparePass(Registry);
initializeEarlyIfConverterPass(Registry);
initializeExpandISelPseudosPass(Registry);
OpenPOWER on IntegriCloud