summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/AsmWriterEmitter.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2011-05-23 00:03:39 +0000
committerChris Lattner <sabre@nondot.org>2011-05-23 00:03:39 +0000
commit83791ced7ba2a2d43d37bb1350f28ddf83c029f9 (patch)
tree0367ad4b2449d64911deb97fb658aa0253dc4aba /llvm/utils/TableGen/AsmWriterEmitter.cpp
parent4d37d9979857744d6bf306e8d90abb07209fea49 (diff)
downloadbcm5719-llvm-83791ced7ba2a2d43d37bb1350f28ddf83c029f9.tar.gz
bcm5719-llvm-83791ced7ba2a2d43d37bb1350f28ddf83c029f9.zip
Teach valuetracking that byval arguments with a specified alignment are
aligned. Teach memcpyopt to not give up all hope when confonted with an underaligned memcpy feeding an overaligned byval. If the *source* of the memcpy can be determined to be adequeately aligned, or if it can be forced to be, we can eliminate the memcpy. This addresses PR9794. We now compile the example into: define i32 @f(%struct.p* nocapture byval align 8 %q) nounwind ssp { entry: %call = call i32 @g(%struct.p* byval align 8 %q) nounwind ret i32 %call } in both x86-64 and x86-32 mode. We still don't get a tailcall though, because tailcalls apparently can't handle byval. llvm-svn: 131884
Diffstat (limited to 'llvm/utils/TableGen/AsmWriterEmitter.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud