diff options
author | Nirav Dave <niravd@google.com> | 2018-01-08 16:21:35 +0000 |
---|---|---|
committer | Nirav Dave <niravd@google.com> | 2018-01-08 16:21:35 +0000 |
commit | 6e2d03d4103d1b2032fc18343f8b13568eaefddb (patch) | |
tree | b77fed9b6d36f8f3417b63c43d66f90491996ea4 /llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp | |
parent | 1092ceae556bf36c3691d2d476f62711157f5257 (diff) | |
download | bcm5719-llvm-6e2d03d4103d1b2032fc18343f8b13568eaefddb.tar.gz bcm5719-llvm-6e2d03d4103d1b2032fc18343f8b13568eaefddb.zip |
[DAG] Teach BaseIndexOffset to correctly handle with indexed operations
BaseIndexOffset address analysis incorrectly ignores offsets folded
into indexed memory operations causing potential errors in alias
analysis of pre-indexed operations.
Reviewers: efriedma, RKSimon, hfinkel, jyknight
Subscribers: hiraditya, javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D41701
llvm-svn: 322003
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 7e99863b1ee..e91a7906005 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -7947,11 +7947,8 @@ bool SelectionDAG::areNonVolatileConsecutiveLoads(LoadSDNode *LD, if (VT.getSizeInBits() / 8 != Bytes) return false; - SDValue Loc = LD->getOperand(1); - SDValue BaseLoc = Base->getOperand(1); - - auto BaseLocDecomp = BaseIndexOffset::match(BaseLoc, *this); - auto LocDecomp = BaseIndexOffset::match(Loc, *this); + auto BaseLocDecomp = BaseIndexOffset::match(Base, *this); + auto LocDecomp = BaseIndexOffset::match(LD, *this); int64_t Offset = 0; if (BaseLocDecomp.equalBaseIndex(LocDecomp, *this, Offset)) |