summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/TargetPassConfig.cpp
diff options
context:
space:
mode:
authorClement Courbet <courbet@google.com>2017-11-02 15:02:51 +0000
committerClement Courbet <courbet@google.com>2017-11-02 15:02:51 +0000
commit1dc37b9c3bf01a49ee7a26c28f7c62eb286faaf8 (patch)
treeac1ec75782441d11cedeeacde6c272e7e05d5fbd /llvm/lib/CodeGen/TargetPassConfig.cpp
parent5347ebef23f2124b43460ad51682fd792cf7a140 (diff)
downloadbcm5719-llvm-1dc37b9c3bf01a49ee7a26c28f7c62eb286faaf8.tar.gz
bcm5719-llvm-1dc37b9c3bf01a49ee7a26c28f7c62eb286faaf8.zip
[ExpandMemCmp] Split ExpandMemCmp from CodeGen into its own pass.
Summary: This is mostly a noop (most of the test diffs are renamed blocks). There are a few temporary register renames (eax<->ecx) and a few blocks are shuffled around. See the discussion in PR33325 for more details. Reviewers: spatel Subscribers: mgorny Differential Revision: https://reviews.llvm.org/D39456 llvm-svn: 317211
Diffstat (limited to 'llvm/lib/CodeGen/TargetPassConfig.cpp')
-rw-r--r--llvm/lib/CodeGen/TargetPassConfig.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/TargetPassConfig.cpp b/llvm/lib/CodeGen/TargetPassConfig.cpp
index c5101b1ecfc..59e88ba3bda 100644
--- a/llvm/lib/CodeGen/TargetPassConfig.cpp
+++ b/llvm/lib/CodeGen/TargetPassConfig.cpp
@@ -600,8 +600,14 @@ void TargetPassConfig::addIRPasses() {
addPass(createPrintFunctionPass(dbgs(), "\n\n*** Code after LSR ***\n"));
}
- if (getOptLevel() != CodeGenOpt::None && EnableMergeICmps) {
- addPass(createMergeICmpsPass());
+ if (getOptLevel() != CodeGenOpt::None) {
+ // The MergeICmpsPass tries to create memcmp calls by grouping sequences of
+ // loads and compares. ExpandMemCmpPass then tries to expand those calls
+ // into optimally-sized loads and compares. The transforms are enabled by a
+ // target lowering hook.
+ if (EnableMergeICmps)
+ addPass(createMergeICmpsPass());
+ addPass(createExpandMemCmpPass());
}
// Run GC lowering passes for builtin collectors
OpenPOWER on IntegriCloud