aboutsummaryrefslogtreecommitdiffstats
path: root/lib/IR
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2013-03-21 09:52:18 +0000
committerChandler Carruth <chandlerc@gmail.com>2013-03-21 09:52:18 +0000
commitd647ec52396ed0f1886537114ab587c71fc43565 (patch)
tree0c8a4a4c2a84dd206a0788ed2b3c9b5ec95ddee0 /lib/IR
parent930a4fa8e5ef7d9937635d9058d6ab315fa4a314 (diff)
downloadexternal_llvm-d647ec52396ed0f1886537114ab587c71fc43565.zip
external_llvm-d647ec52396ed0f1886537114ab587c71fc43565.tar.gz
external_llvm-d647ec52396ed0f1886537114ab587c71fc43565.tar.bz2
[SROA] Prefix names using a custom IRBuilder inserter.
The key part of this is ensuring that name prefixes remain in a Twine form until we get to a point where we can nuke them under NDEBUG. This is tricky using the old APIs as they played fast and loose with Twine, which is prone to serious error. The inserter is much cleaner as it is actually in the call stack leading to the setName call, and so has a good opportunity to prepend the prefix. This matters more than you might imagine because most runs over an alloca find a single partition, and rewrite 3 or 4 instructions referring to it. As a consequence doing this lazily and exclusively with Twine allows the optimizer to delete more of it and shaves another 2% to 3% off of the release build's SROA run time for PR15412. I also think the APIs are cleaner, and the use of Twine is more reliable, so I consider it a win-win despite the churn required to reach this state. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177631 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/IR')
0 files changed, 0 insertions, 0 deletions