aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/R600
diff options
context:
space:
mode:
authorChristian Konig <christian.koenig@amd.com>2013-02-16 11:27:35 +0000
committerChristian Konig <christian.koenig@amd.com>2013-02-16 11:27:35 +0000
commit4c79c71d99336baf312e2784311b257c5d9eebce (patch)
tree2d488127fbd7a9cd05f4d5bd4022f7222a890520 /lib/Target/R600
parentf0e469bcaf65dddeadb5ccb400b4a712c5f763be (diff)
downloadexternal_llvm-4c79c71d99336baf312e2784311b257c5d9eebce.zip
external_llvm-4c79c71d99336baf312e2784311b257c5d9eebce.tar.gz
external_llvm-4c79c71d99336baf312e2784311b257c5d9eebce.tar.bz2
R600/structurizer: improve PHI value finding
Using the new NearestCommonDominator class. This is a candidate for the stable branch. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175346 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/R600')
-rw-r--r--lib/Target/R600/AMDGPUStructurizeCFG.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Target/R600/AMDGPUStructurizeCFG.cpp b/lib/Target/R600/AMDGPUStructurizeCFG.cpp
index 86cb04a..3801347 100644
--- a/lib/Target/R600/AMDGPUStructurizeCFG.cpp
+++ b/lib/Target/R600/AMDGPUStructurizeCFG.cpp
@@ -533,12 +533,18 @@ void AMDGPUStructurizeCFG::setPhiValues() {
Updater.AddAvailableValue(&Func->getEntryBlock(), Undef);
Updater.AddAvailableValue(To, Undef);
+ NearestCommonDominator Dominator(DT);
+ Dominator.addBlock(To, false);
for (BBValueVector::iterator VI = PI->second.begin(),
VE = PI->second.end(); VI != VE; ++VI) {
Updater.AddAvailableValue(VI->first, VI->second);
+ Dominator.addBlock(VI->first);
}
+ if (!Dominator.wasResultExplicitMentioned())
+ Updater.AddAvailableValue(Dominator.getResult(), Undef);
+
for (BBVector::iterator FI = From.begin(), FE = From.end();
FI != FE; ++FI) {