summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2012-06-09 03:14:50 +0000
committerHal Finkel <hfinkel@anl.gov>2012-06-09 03:14:50 +0000
commiteb50c2d4a49941b58711d98e7e0d7e30fbcd90d8 (patch)
tree42aa201ecc4e99c5859916e4c7c3326235c886db /llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
parent091b87bb9dc20e7c2cec4ee43bc0647e47bd557a (diff)
downloadbcm5719-llvm-eb50c2d4a49941b58711d98e7e0d7e30fbcd90d8.tar.gz
bcm5719-llvm-eb50c2d4a49941b58711d98e7e0d7e30fbcd90d8.zip
Enable tail merging on PPC.
Tail merging had been disabled on PPC because it would disturb bundling decisions made during pre-RA scheduling on the 970 cores. Now, however, all bundling decisions are made during post-RA scheduling, and tail merging is generally beneficial (the average test-suite speedup is insignificantly positive). Largest test-suite speedups: MultiSource/Benchmarks/mediabench/gsm/toast/toast - 30% MultiSource/Benchmarks/BitBench/uuencode/uuencode - 23% SingleSource/Benchmarks/Shootout-C++/ary - 21% SingleSource/Benchmarks/Stanford/Queens - 17% Largest slowdowns: MultiSource/Benchmarks/MiBench/security-sha/security-sha - 24% MultiSource/Benchmarks/McCat/03-testtrie/testtrie - 22% MultiSource/Applications/JM/ldecod/ldecod - 14% MultiSource/Benchmarks/mediabench/g721/g721encode/encode - 9% This is improved by using full (instead of just critical) anti-dependency breaking, but doing so still causes miscompiles and so cannot yet be enabled by default. llvm-svn: 158259
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCTargetMachine.cpp')
-rw-r--r--llvm/lib/Target/PowerPC/PPCTargetMachine.cpp8
1 files changed, 1 insertions, 7 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
index b9c703e708d..d7a808855bb 100644
--- a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
+++ b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
@@ -93,13 +93,7 @@ public:
} // namespace
TargetPassConfig *PPCTargetMachine::createPassConfig(PassManagerBase &PM) {
- TargetPassConfig *PassConfig = new PPCPassConfig(this, PM);
-
- // Override this for PowerPC. Tail merging happily breaks up instruction issue
- // groups, which typically degrades performance.
- PassConfig->setEnableTailMerge(false);
-
- return PassConfig;
+ return new PPCPassConfig(this, PM);
}
bool PPCPassConfig::addPreRegAlloc() {
OpenPOWER on IntegriCloud