diff options
| author | Clement Courbet <courbet@google.com> | 2017-11-02 15:02:51 +0000 |
|---|---|---|
| committer | Clement Courbet <courbet@google.com> | 2017-11-02 15:02:51 +0000 |
| commit | 1dc37b9c3bf01a49ee7a26c28f7c62eb286faaf8 (patch) | |
| tree | ac1ec75782441d11cedeeacde6c272e7e05d5fbd /llvm/lib/CodeGen/TargetPassConfig.cpp | |
| parent | 5347ebef23f2124b43460ad51682fd792cf7a140 (diff) | |
| download | bcm5719-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.cpp | 10 |
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 |

