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.
Paths
| Differential D39456
[ExpandMemCmp] Split ExpandMemCmp from CodeGen into its own pass. ClosedPublic Authored by courbet on Oct 31 2017, 9:14 AM.
Details Summary This is mostly a noop (most of the test diffs are renamed blocks). See the discussion in PR33325 for more details.
Diff Detail
Event Timeline
Comment Actions LGTM. See inline for small changes before committing.
This revision is now accepted and ready to land.Nov 2 2017, 7:18 AM courbet marked 2 inline comments as done. Comment Actions
Closed by commit rL317211: [ExpandMemCmp] Split ExpandMemCmp from CodeGen into its own pass. (authored by courbet). · Explain WhyNov 2 2017, 8:03 AM This revision was automatically updated to reflect the committed changes. courbet marked an inline comment as done.
Revision Contents
Diff 121302 include/llvm/InitializePasses.h
include/llvm/LinkAllPasses.h
include/llvm/Transforms/Scalar.h
lib/CodeGen/CodeGenPrepare.cpp
lib/CodeGen/TargetPassConfig.cpp
lib/Transforms/Scalar/CMakeLists.txt
lib/Transforms/Scalar/ExpandMemCmp.cpp
lib/Transforms/Scalar/Scalar.cpp
test/CodeGen/Generic/llc-start-stop.ll
test/CodeGen/X86/memcmp-optsize.ll
test/CodeGen/X86/memcmp.ll
test/Transforms/CodeGenPrepare/X86/memcmp.ll
test/Transforms/ExpandMemCmp/X86/lit.local.cfg
test/Transforms/ExpandMemCmp/X86/memcmp.ll
|
It would be good to put a comment here to describe the relationship of these 2 passes. Something like:
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.