diff options
| author | Davide Italiano <davide@freebsd.org> | 2017-07-11 19:49:12 +0000 |
|---|---|---|
| committer | Davide Italiano <davide@freebsd.org> | 2017-07-11 19:49:12 +0000 |
| commit | ee1c82112e705f07c8e82ea8484e891b9e9d2124 (patch) | |
| tree | 862e2880040a98245fc7781db7f9fd508f76c908 /llvm/lib/Transforms/Scalar/NewGVN.cpp | |
| parent | 1fe5628aa08e7296bbee6fe78ea895b741cf7511 (diff) | |
| download | bcm5719-llvm-ee1c82112e705f07c8e82ea8484e891b9e9d2124.tar.gz bcm5719-llvm-ee1c82112e705f07c8e82ea8484e891b9e9d2124.zip | |
[NewGVN] Check for congruency of memory accesses.
This is fine as nothing in the code relies on leader and memory
leader being the same for a given congruency class. Ack'ed by
Dan.
Fixes PR33720.
llvm-svn: 307699
Diffstat (limited to 'llvm/lib/Transforms/Scalar/NewGVN.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/NewGVN.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/NewGVN.cpp b/llvm/lib/Transforms/Scalar/NewGVN.cpp index f70ec40f045..9d018563618 100644 --- a/llvm/lib/Transforms/Scalar/NewGVN.cpp +++ b/llvm/lib/Transforms/Scalar/NewGVN.cpp @@ -2073,7 +2073,8 @@ void NewGVN::moveMemoryToNewCongruenceClass(Instruction *I, // be the MemoryAccess of OldClass. assert((!InstMA || !OldClass->getMemoryLeader() || OldClass->getLeader() != I || - OldClass->getMemoryLeader() == InstMA) && + MemoryAccessToClass.lookup(OldClass->getMemoryLeader()) == + MemoryAccessToClass.lookup(InstMA)) && "Representative MemoryAccess mismatch"); // First, see what happens to the new class if (!NewClass->getMemoryLeader()) { |

