summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
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
commit0bccf9d60b2a7a33653e2fa18c6028c0546bbb61 (patch)
treed2c813c2bde6583d99e12569f5d3cff2a86859a2 /llvm/lib/Target
parentd08e3d753e401307b9a7c0316559cc8c1b39fd65 (diff)
downloadbcm5719-llvm-0bccf9d60b2a7a33653e2fa18c6028c0546bbb61.tar.gz
bcm5719-llvm-0bccf9d60b2a7a33653e2fa18c6028c0546bbb61.zip
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> llvm-svn: 175346
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/R600/AMDGPUStructurizeCFG.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/R600/AMDGPUStructurizeCFG.cpp b/llvm/lib/Target/R600/AMDGPUStructurizeCFG.cpp
index 86cb04aeb84..38013476188 100644
--- a/llvm/lib/Target/R600/AMDGPUStructurizeCFG.cpp
+++ b/llvm/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) {
OpenPOWER on IntegriCloud