From: Clement Courbet Date: Mon, 13 May 2019 09:07:37 +0000 (+0000) Subject: [DAGCombiner] Fix invalid alias analysis. X-Git-Tag: android-x86-9.0-r1~3513 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=013814dc770c8be05e860d75cdebdfba5a96d4c4;p=android-x86%2Fexternal-llvm.git [DAGCombiner] Fix invalid alias analysis. Summary: When we know for sure whether two addresses do or do not alias, we should immediately return from DAGCombiner::isAlias(). I think this comes from a bad copy/paste, Sorry for not catching that during the code review. Fixes PR41855. Reviewers: niravd, gchatelet, EricWF Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D61846 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@360566 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index ed805e0750f..12490e6c6ef 100644 --- a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -6128,7 +6128,7 @@ static unsigned BigEndianByteAt(unsigned BW, unsigned i) { } // Check if the bytes offsets we are looking at match with either big or -// little endian value loaded. Return true for big endian, false for little +// little endian value loaded. Return true for big endian, false for little // endian, and None if match failed. static Optional isBigEndian(const SmallVector &ByteOffsets, int64_t FirstOffset) { @@ -19800,8 +19800,7 @@ bool DAGCombiner::isAlias(SDNode *Op0, SDNode *Op1) const { bool IsAlias; if (BaseIndexOffset::computeAliasing(Op0, MUC0.NumBytes, Op1, MUC1.NumBytes, - DAG, IsAlias) && - !IsAlias) + DAG, IsAlias)) return IsAlias; // The following all rely on MMO0 and MMO1 being valid. Fail conservatively if diff --git a/test/CodeGen/X86/lifetime-alias.ll b/test/CodeGen/X86/lifetime-alias.ll index 8482ca2c167..7631766c249 100644 --- a/test/CodeGen/X86/lifetime-alias.ll +++ b/test/CodeGen/X86/lifetime-alias.ll @@ -40,26 +40,28 @@ define dso_local i8 @main() local_unnamed_addr #0 personality i8* bitcast (i32 ( ; CHECK-NEXT: movl $1701999988, -{{[0-9]+}}(%rsp) # imm = 0x65727574 ; CHECK-NEXT: movb $0, -{{[0-9]+}}(%rsp) ; CHECK-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp) -; CHECK-NEXT: movabsq $1513209474796486656, %rax # imm = 0x1500000000000000 +; CHECK-NEXT: movq $0, -{{[0-9]+}}(%rsp) +; CHECK-NEXT: movb $21, -{{[0-9]+}}(%rsp) +; CHECK-NEXT: movabsq $7308613581744070988, %rax # imm = 0x656D69547473614C ; CHECK-NEXT: movq %rax, -{{[0-9]+}}(%rsp) ; CHECK-NEXT: movups {{.*}}(%rip), %xmm1 ; CHECK-NEXT: movaps %xmm1, -{{[0-9]+}}(%rsp) -; CHECK-NEXT: movabsq $7308613581744070988, %rcx # imm = 0x656D69547473614C -; CHECK-NEXT: movq %rcx, -{{[0-9]+}}(%rsp) -; CHECK-NEXT: movabsq $792633534417207296, %rcx # imm = 0xB00000000000000 -; CHECK-NEXT: movq %rcx, -{{[0-9]+}}(%rsp) -; CHECK-NEXT: movq -{{[0-9]+}}(%rsp), %rcx -; CHECK-NEXT: movq %rcx, -{{[0-9]+}}(%rsp) -; CHECK-NEXT: movzwl -{{[0-9]+}}(%rsp), %ecx -; CHECK-NEXT: movw %cx, -{{[0-9]+}}(%rsp) -; CHECK-NEXT: movb -{{[0-9]+}}(%rsp), %cl -; CHECK-NEXT: movb %cl, -{{[0-9]+}}(%rsp) -; CHECK-NEXT: movb -{{[0-9]+}}(%rsp), %cl -; CHECK-NEXT: movb %cl, -{{[0-9]+}}(%rsp) -; CHECK-NEXT: movl -{{[0-9]+}}(%rsp), %ecx -; CHECK-NEXT: movl %ecx, -{{[0-9]+}}(%rsp) +; CHECK-NEXT: movb $0, -{{[0-9]+}}(%rsp) +; CHECK-NEXT: movabsq $792633534417207296, %rax # imm = 0xB00000000000000 +; CHECK-NEXT: movq %rax, -{{[0-9]+}}(%rsp) +; CHECK-NEXT: movq -{{[0-9]+}}(%rsp), %rax +; CHECK-NEXT: movq %rax, -{{[0-9]+}}(%rsp) +; CHECK-NEXT: movzwl -{{[0-9]+}}(%rsp), %eax +; CHECK-NEXT: movw %ax, -{{[0-9]+}}(%rsp) +; CHECK-NEXT: movb -{{[0-9]+}}(%rsp), %al +; CHECK-NEXT: movb %al, -{{[0-9]+}}(%rsp) +; CHECK-NEXT: movb -{{[0-9]+}}(%rsp), %al +; CHECK-NEXT: movb %al, -{{[0-9]+}}(%rsp) +; CHECK-NEXT: movl -{{[0-9]+}}(%rsp), %eax +; CHECK-NEXT: movl %eax, -{{[0-9]+}}(%rsp) ; CHECK-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp) ; CHECK-NEXT: movq $0, -{{[0-9]+}}(%rsp) +; CHECK-NEXT: movq -{{[0-9]+}}(%rsp), %rax ; CHECK-NEXT: movq %rax, -{{[0-9]+}}(%rsp) ; CHECK-NEXT: movaps -{{[0-9]+}}(%rsp), %xmm1 ; CHECK-NEXT: movups %xmm1, -{{[0-9]+}}(%rsp)