summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
diff options
context:
space:
mode:
authorJingyue Wu <jingyue@google.com>2015-06-09 00:05:56 +0000
committerJingyue Wu <jingyue@google.com>2015-06-09 00:05:56 +0000
commit2e4d1dd0ed720f4c95313305bbba54b36804247c (patch)
treefac62f0228c1be4877d6d887ec4d86cf155398fc /llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
parent0302da614a07d5d04c7c30fa725c838876d1a477 (diff)
downloadbcm5719-llvm-2e4d1dd0ed720f4c95313305bbba54b36804247c.tar.gz
bcm5719-llvm-2e4d1dd0ed720f4c95313305bbba54b36804247c.zip
[NVPTX] run SROA after NVPTXFavorNonGenericAddrSpaces
Summary: This cleans up most allocas NVPTXLowerKernelArgs emits for byval parameters. Test Plan: makes bug21465.ll more stronger to verify no redundant local load/store. Reviewers: eliben, jholewinski Reviewed By: eliben, jholewinski Subscribers: jholewinski, llvm-commits Differential Revision: http://reviews.llvm.org/D10322 llvm-svn: 239368
Diffstat (limited to 'llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp')
-rw-r--r--llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
index 7fdfdbfb83f..a6466687bc7 100644
--- a/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
@@ -165,6 +165,11 @@ void NVPTXPassConfig::addIRPasses() {
addPass(createGenericToNVVMPass());
addPass(createNVPTXLowerKernelArgsPass(&getNVPTXTargetMachine()));
addPass(createNVPTXFavorNonGenericAddrSpacesPass());
+ // NVPTXLowerKernelArgs emits alloca for byval parameters which can often
+ // be eliminated by SROA. We do not run SROA right after NVPTXLowerKernelArgs
+ // because we plan to merge NVPTXLowerKernelArgs and
+ // NVPTXFavorNonGenericAddrSpaces into one pass.
+ addPass(createSROAPass());
// FavorNonGenericAddrSpaces shortcuts unnecessary addrspacecasts, and leave
// them unused. We could remove dead code in an ad-hoc manner, but that
// requires manual work and might be error-prone.
OpenPOWER on IntegriCloud