Merge clang's isRepeatedBytePattern with LLVM's isBytewiseValue
authorJF Bastien <jfbastien@apple.com>
Fri, 21 Sep 2018 05:17:42 +0000 (05:17 +0000)
committerJF Bastien <jfbastien@apple.com>
Fri, 21 Sep 2018 05:17:42 +0000 (05:17 +0000)
commit73d8e4e53186c43e7aa99cc0dfa8d640b047ef98
treeaf52acbbbef50a4610340b07b17750a989dceb07
parent9da65a3ab009ca2f3b55d7a95d266554fec88d31
Merge clang's isRepeatedBytePattern with LLVM's isBytewiseValue

Summary:
his code was in CGDecl.cpp and really belongs in LLVM's isBytewiseValue. Teach isBytewiseValue the tricks clang's isRepeatedBytePattern had, including merging undef properly, and recursing on more types.

clang part of this patch: D51752

Subscribers: dexonsmith, llvm-commits

Differential Revision: https://reviews.llvm.org/D51751

llvm-svn: 342709
llvm/include/llvm/Analysis/ValueTracking.h
llvm/lib/Analysis/ValueTracking.cpp
llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp
llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
llvm/test/Transforms/MemCpyOpt/fca2memcpy.ll
llvm/test/Transforms/MemCpyOpt/memcpy-to-memset.ll