diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-10-16 17:49:09 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-10-16 17:49:09 +0000 |
| commit | e3a9a676f9e3000662c05ff35a3b4312e04b5ee2 (patch) | |
| tree | 2d733fa5c64945bc3a7ce34986d92327baffef35 /llvm/unittests/ADT | |
| parent | 62ce463a35d7d0dd919672a0a824352b1847de06 (diff) | |
| download | bcm5719-llvm-e3a9a676f9e3000662c05ff35a3b4312e04b5ee2.tar.gz bcm5719-llvm-e3a9a676f9e3000662c05ff35a3b4312e04b5ee2.zip | |
PR30711: Fix incorrect profiling of 'long long' in FoldingSet, then use it to
fix TBAA violation in profiling of pointers.
llvm-svn: 284336
Diffstat (limited to 'llvm/unittests/ADT')
| -rw-r--r-- | llvm/unittests/ADT/FoldingSet.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/unittests/ADT/FoldingSet.cpp b/llvm/unittests/ADT/FoldingSet.cpp index 927ef313cb9..69646388119 100644 --- a/llvm/unittests/ADT/FoldingSet.cpp +++ b/llvm/unittests/ADT/FoldingSet.cpp @@ -35,6 +35,27 @@ TEST(FoldingSetTest, UnalignedStringTest) { EXPECT_EQ(a.ComputeHash(), b.ComputeHash()); } +TEST(FoldingSetTest, LongLongComparison) { + struct LongLongContainer : FoldingSetNode { + unsigned long long A, B; + LongLongContainer(unsigned long long A, unsigned long long B) + : A(A), B(B) {} + void Profile(FoldingSetNodeID &ID) const { + ID.AddInteger(A); + ID.AddInteger(B); + } + }; + + LongLongContainer C1((1ULL << 32) + 1, 1ULL); + LongLongContainer C2(1ULL, (1ULL << 32) + 1); + + FoldingSet<LongLongContainer> Set; + + EXPECT_EQ(&C1, Set.GetOrInsertNode(&C1)); + EXPECT_EQ(&C2, Set.GetOrInsertNode(&C2)); + EXPECT_EQ(2U, Set.size()); +} + struct TrivialPair : public FoldingSetNode { unsigned Key = 0; unsigned Value = 0; |

