diff options
author | Artur Pilipenko <apilipenko@azulsystems.com> | 2017-02-27 13:04:23 +0000 |
---|---|---|
committer | Artur Pilipenko <apilipenko@azulsystems.com> | 2017-02-27 13:04:23 +0000 |
commit | f7196c8d9ecf17f0e2834aba94bc9dfc7c46b718 (patch) | |
tree | b5b5bfa7904b90975a9eb976297fc9270533e8f4 /clang/unittests/Format/NamespaceEndCommentsFixerTest.cpp | |
parent | 4b2b6bfb97ee5062142a4efe0aabef408fd2a6bc (diff) | |
download | bcm5719-llvm-f7196c8d9ecf17f0e2834aba94bc9dfc7c46b718.tar.gz bcm5719-llvm-f7196c8d9ecf17f0e2834aba94bc9dfc7c46b718.zip |
[DAGCombine] Fix for a load combine bug with non-zero offset patterns on BE targets
This pattern is essentially a i16 load from p+1 address:
%p1.i16 = bitcast i8* %p to i16*
%p2.i8 = getelementptr i8, i8* %p, i64 2
%v1 = load i16, i16* %p1.i16
%v2.i8 = load i8, i8* %p2.i8
%v2 = zext i8 %v2.i8 to i16
%v1.shl = shl i16 %v1, 8
%res = or i16 %v1.shl, %v2
Current implementation would identify %v1 load as the first byte load and would mistakenly emit a i16 load from %p1.i16 address. This patch adds a check that the first byte is loaded from a non-zero offset of the first load address. This way this address can be used as the base address for the combined value. Otherwise just give up combining.
llvm-svn: 296336
Diffstat (limited to 'clang/unittests/Format/NamespaceEndCommentsFixerTest.cpp')
0 files changed, 0 insertions, 0 deletions