Revision tags: llvmorg-6.0.1-rc1 |
|
#
429b0032 |
| 07-Apr-2018 |
Roman Lebedev <lebedev.ri@gmail.com> |
[unittests] ADT: silence -Wself-assign diagnostics
Summary: D44883 extends -Wself-assign to also work on C++ classes. In it's current state (as suggested by @rjmccall), it is not under it's own sub-
[unittests] ADT: silence -Wself-assign diagnostics
Summary: D44883 extends -Wself-assign to also work on C++ classes. In it's current state (as suggested by @rjmccall), it is not under it's own sub-group. Since that diag is enabled by `-Wall`, stage2 testing showed that: * It does not fire on any llvm code * It does fire for these 3 unittests * It does fire for libc++ tests
This diff simply silences those new warnings in llvm's unittests. A similar diff will be needed for libcxx. (`libcxx/test/std/language.support/support.types/byteops/`, maybe something else)
Since i don't think we want to repeat rL322901, let's talk about it. I've subscribed everyone who i think might be interested...
There are several ways forward: * Not extend -Wself-assign, close D44883. Not very productive outcome i'd say. * Keep D44883 in it's current state. Unless your custom overloaded operators do something unusual for when self-assigning, the warning is no less of a false-positive than the current -Wself-assign. Except for tests of course, there you'd want to silence it. The current suggestion is: ``` S a; a = (S &)a; ``` * Split the diagnostic in two - `-Wself-assign-builtin` (i.e. what is `-Wself-assign` in trunk), and `-Wself-assign-overloaded` - the new part in D44883. Since, as i said, i'm not really sure why it would be less of a error than the current `-Wself-assign`, both would still be in `-Wall`. That way one could simply pass `-Wno-self-assign-overloaded` for all the tests. Pretty simple to do, and will surely work. * Split the diagnostic in two - `-Wself-assign-trivial`, and `-Wself-assign-nontrivial`. The choice of which diag to emit would depend on trivial-ness of that particular operator. The current `-Wself-assign` would be `-Wself-assign-trivial`. https://godbolt.org/g/gwDASe - `A`, `B` and `C` case would be treated as trivial, and `D`, `E` and `F` as non-trivial. Will be the most complicated to implement.
Thoughts?
Reviewers: aaron.ballman, rsmith, rtrieu, rjmccall, dblaikie, atrick, gottesmm
Reviewed By: dblaikie
Subscribers: lebedev.ri, phosek, vsk, rnk, thakis, sammccall, mclow.lists, llvm-commits, rjmccall
Differential Revision: https://reviews.llvm.org/D45082
llvm-svn: 329491
show more ...
|
Revision tags: llvmorg-5.0.2, llvmorg-5.0.2-rc2, llvmorg-5.0.2-rc1, llvmorg-6.0.0, llvmorg-6.0.0-rc3, llvmorg-6.0.0-rc2 |
|
#
21e545d0 |
| 24-Jan-2018 |
Malcolm Parsons <malcolm.parsons@gmail.com> |
Fix typos of occurred and occurrence
llvm-svn: 323318
|
Revision tags: llvmorg-6.0.0-rc1, llvmorg-5.0.1, llvmorg-5.0.1-rc3, llvmorg-5.0.1-rc2, llvmorg-5.0.1-rc1, llvmorg-5.0.0, llvmorg-5.0.0-rc5, llvmorg-5.0.0-rc4, llvmorg-5.0.0-rc3, llvmorg-5.0.0-rc2, llvmorg-5.0.0-rc1, llvmorg-4.0.1, llvmorg-4.0.1-rc3 |
|
#
9a67b073 |
| 06-Jun-2017 |
Chandler Carruth <chandlerc@gmail.com> |
Re-sort #include lines for unittests. This uses a slightly modified clang-format (https://reviews.llvm.org/D33932) to keep primary headers at the top and handle new utility headers like 'gmock' consi
Re-sort #include lines for unittests. This uses a slightly modified clang-format (https://reviews.llvm.org/D33932) to keep primary headers at the top and handle new utility headers like 'gmock' consistently with other utility headers.
No other change was made. I did no manual edits, all of this is clang-format.
This should allow other changes to have more clear and focused diffs, and is especially motivated by moving some headers into more focused libraries.
llvm-svn: 304786
show more ...
|
Revision tags: llvmorg-4.0.1-rc2, llvmorg-4.0.1-rc1 |
|
#
04d9e746 |
| 10-Mar-2017 |
Daniel Berlin <dberlin@dberlin.org> |
Add support for DenseMap/DenseSet count and find using const pointers
Summary: Similar to SmallPtrSet, this makes find and count work with both const referneces and const pointers.
Reviewers: dblai
Add support for DenseMap/DenseSet count and find using const pointers
Summary: Similar to SmallPtrSet, this makes find and count work with both const referneces and const pointers.
Reviewers: dblaikie
Subscribers: llvm-commits, mzolotukhin
Differential Revision: https://reviews.llvm.org/D30713
llvm-svn: 297424
show more ...
|
Revision tags: llvmorg-4.0.0, llvmorg-4.0.0-rc4, llvmorg-4.0.0-rc3, llvmorg-4.0.0-rc2, llvmorg-4.0.0-rc1, llvmorg-3.9.1, llvmorg-3.9.1-rc3, llvmorg-3.9.1-rc2, llvmorg-3.9.1-rc1 |
|
#
688c8347 |
| 18-Oct-2016 |
Justin Lebar <jlebar@google.com> |
[ADT] Remove CachedHash<T>.
Nobody is using it.
Differential Revision: https://reviews.llvm.org/D25630
llvm-svn: 284503
|
Revision tags: llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2, llvmorg-3.9.0-rc1 |
|
#
857754a1 |
| 21-Jul-2016 |
Benjamin Kramer <benny.kra@googlemail.com> |
[DenseMap] Add a C++17-style try_emplace method.
This provides an elegant pattern to solve the "construct if not in map already" problem we have many times in LLVM. Without try_emplace we either hav
[DenseMap] Add a C++17-style try_emplace method.
This provides an elegant pattern to solve the "construct if not in map already" problem we have many times in LLVM. Without try_emplace we either have to rely on a sentinel value (nullptr) or do two lookups.
llvm-svn: 276277
show more ...
|
Revision tags: llvmorg-3.8.1, llvmorg-3.8.1-rc1 |
|
#
e9f0784a |
| 21-Apr-2016 |
Rafael Espindola <rafael.espindola@gmail.com> |
Add a CachedHash structure.
A DenseMap doesn't store the hashes, so it needs to recompute them when the table is resized.
In some applications the hashing cost is noticeable. That is the case for e
Add a CachedHash structure.
A DenseMap doesn't store the hashes, so it needs to recompute them when the table is resized.
In some applications the hashing cost is noticeable. That is the case for example in lld for symbol names (StringRef).
This patch adds a templated structure that can wraps any value that can go in a DenseMap and caches the hash.
llvm-svn: 266981
show more ...
|
#
41298975 |
| 25-Mar-2016 |
Mehdi Amini <mehdi.amini@apple.com> |
StringMap/DenseMap unittests: use piecewise_construct and ensure no copy occurs.
This makes us no longer relying on move-construction elision by the compiler. Suggested by D. Blaikie.
From: Mehdi A
StringMap/DenseMap unittests: use piecewise_construct and ensure no copy occurs.
This makes us no longer relying on move-construction elision by the compiler. Suggested by D. Blaikie.
From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 264475
show more ...
|
#
9706dcf9 |
| 25-Mar-2016 |
Mehdi Amini <mehdi.amini@apple.com> |
Disable counting the number of move in the unittest, it seems to rely on move-construction elision
From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 264412
|
#
05eca80c |
| 25-Mar-2016 |
Mehdi Amini <mehdi.amini@apple.com> |
Fix DenseMap::reserve(): the formula was wrong
Summary: Just running the loop in the unittests for a few more iterations (till 48) exhibit that the condition on the limit was not handled properly in
Fix DenseMap::reserve(): the formula was wrong
Summary: Just running the loop in the unittests for a few more iterations (till 48) exhibit that the condition on the limit was not handled properly in r263522. Rewrite the test to use a class to count move/copies that happens when inserting into the map. Also take the opportunity to refactor the logic to compute the number of buckets required for a given number of entries in the map. Use this when constructing a DenseMap with a desired size given to the constructor (and add a tests for this).
Reviewers: dblaikie
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D18345
From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 264384
show more ...
|
#
844baa24 |
| 22-Mar-2016 |
Mehdi Amini <mehdi.amini@apple.com> |
Fix unittests: resize() -> reserve()
From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 264029
|
#
a4b1ace4 |
| 15-Mar-2016 |
Fiona Glaser <escha@apple.com> |
DenseMap: make .resize() do the intuitive thing
In some places, like InstCombine, we resize a DenseMap to fit the elements we intend to put in it, then insert those elements (to avoid continual real
DenseMap: make .resize() do the intuitive thing
In some places, like InstCombine, we resize a DenseMap to fit the elements we intend to put in it, then insert those elements (to avoid continual reallocations as it grows). But .resize(foo) doesn't actually do what people think; it resizes to foo buckets (which is really an implementation detail the user of DenseMap probably shouldn't care about), not the space required to fit foo elements. DenseMap grows if 3/4 of its buckets are full, so this actually causes one forced reallocation every time instead of avoiding a reallocation.
This patch makes .resize(foo) do the intuitive thing: it grows to the size necessary to fit foo elements without new allocations.
Also include a test to verify that .resize() actually does what we think it does.
llvm-svn: 263522
show more ...
|
Revision tags: llvmorg-3.8.0, llvmorg-3.8.0-rc3, llvmorg-3.8.0-rc2, llvmorg-3.8.0-rc1, llvmorg-3.7.1, llvmorg-3.7.1-rc2, llvmorg-3.7.1-rc1 |
|
#
ef711c18 |
| 31-Oct-2015 |
Michael Gottesman <mgottesman@apple.com> |
Add a unittest for SmallDenseMap that tests assigning a SmallDenseMap when it is not small.
This complements CopyConstructorNotSmallTest. If we are testing the copy constructor in such a way, we sho
Add a unittest for SmallDenseMap that tests assigning a SmallDenseMap when it is not small.
This complements CopyConstructorNotSmallTest. If we are testing the copy constructor in such a way, we should also probably test assignment in the same way.
llvm-svn: 251736
show more ...
|
Revision tags: llvmorg-3.7.0, llvmorg-3.7.0-rc4, llvmorg-3.7.0-rc3, studio-1.4, llvmorg-3.7.0-rc2, llvmorg-3.7.0-rc1, llvmorg-3.6.2 |
|
#
59534822 |
| 24-Jun-2015 |
Chandler Carruth <chandlerc@gmail.com> |
[ADT] Teach DenseMap to support StringRef keys.
While often you want to use something specialized like StringMap, when the strings already have persistent storage a normal densemap over them can be
[ADT] Teach DenseMap to support StringRef keys.
While often you want to use something specialized like StringMap, when the strings already have persistent storage a normal densemap over them can be more efficient.
This can't go into StringRef.h because of really obnoxious header chains from the hashing code to the endian detection code to CPU feature detection code to StringMap.
llvm-svn: 240528
show more ...
|
Revision tags: llvmorg-3.6.2-rc1, llvmorg-3.6.1, llvmorg-3.6.1-rc1, llvmorg-3.5.2, llvmorg-3.5.2-rc1 |
|
#
54a7ca3f |
| 04-Mar-2015 |
David Blaikie <dblaikie@gmail.com> |
Explicitly default DenseMapTest::CtorTest::operator=
Using the implicit default copy assignment operator in the presence of a user-declared copy ctor is deprecated in C++11.
llvm-svn: 231225
|
#
7f1e0565 |
| 03-Mar-2015 |
David Blaikie <dblaikie@gmail.com> |
Revert "Remove the explicit SDNodeIterator::operator= in favor of the implicit default"
Accidentally committed a few more of these cleanup changes than intended. Still breaking these out & tidying t
Revert "Remove the explicit SDNodeIterator::operator= in favor of the implicit default"
Accidentally committed a few more of these cleanup changes than intended. Still breaking these out & tidying them up.
This reverts commit r231135.
llvm-svn: 231136
show more ...
|
#
bb8da4c0 |
| 03-Mar-2015 |
David Blaikie <dblaikie@gmail.com> |
Remove the explicit SDNodeIterator::operator= in favor of the implicit default
There doesn't seem to be any need to assert that iterator assignment is between iterators over the same node - if you w
Remove the explicit SDNodeIterator::operator= in favor of the implicit default
There doesn't seem to be any need to assert that iterator assignment is between iterators over the same node - if you want to reuse an iterator variable to iterate another node, that's perfectly acceptable. Just don't mix comparisons between iterators into disjoint sequences, as usual.
llvm-svn: 231135
show more ...
|
Revision tags: llvmorg-3.6.0, llvmorg-3.6.0-rc4, llvmorg-3.6.0-rc3, llvmorg-3.6.0-rc2, llvmorg-3.6.0-rc1, llvmorg-3.5.1, llvmorg-3.5.1-rc2, llvmorg-3.5.1-rc1, llvmorg-3.5.0, llvmorg-3.5.0-rc4, llvmorg-3.5.0-rc3, llvmorg-3.5.0-rc2 |
|
#
fd4f32be |
| 04-Aug-2014 |
Andrew Trick <atrick@apple.com> |
Fix SmallDenseMap assignment operator.
Self assignment would lead to buckets of garbage, causing quadratic probing to hang.
llvm-svn: 214790
|
Revision tags: llvmorg-3.5.0-rc1 |
|
#
7c8d1391 |
| 20-Jun-2014 |
David Blaikie <dblaikie@gmail.com> |
Fix some -Wsign-compare fallout from changing container count member functions to return unsigned instead of bool.
llvm-svn: 211393
|
#
66f09ad0 |
| 08-Jun-2014 |
Craig Topper <craig.topper@gmail.com> |
[C++11] Use 'nullptr'.
llvm-svn: 210442
|
Revision tags: llvmorg-3.4.2, llvmorg-3.4.2-rc1, llvmorg-3.4.1, llvmorg-3.4.1-rc2, llvmorg-3.4.1-rc1 |
|
#
0d64f8b0 |
| 25-Feb-2014 |
Duncan P. N. Exon Smith <dexonsmith@apple.com> |
fix crash in SmallDenseMap copy constructor
Prevent a crash in the SmallDenseMap copy constructor whenever the other map is not in small mode.
<rdar://problem/14292693>
llvm-svn: 202206
|
#
0f679177 |
| 13-Feb-2014 |
Reid Kleckner <reid@kleckner.net> |
Tweak an _MSC_VER ifdef to use typename with clang in a unittest
In theory, Clang should figure out how to parse this correctly without typename, but since this is the last TU that Clang falls back
Tweak an _MSC_VER ifdef to use typename with clang in a unittest
In theory, Clang should figure out how to parse this correctly without typename, but since this is the last TU that Clang falls back on in the self-host, I'm going to compromise and check for __clang__.
And now Clang can self-host on -win32 without fallback! The 'check' and 'check-clang' targets both pass.
llvm-svn: 201358
show more ...
|
Revision tags: llvmorg-3.4.0, llvmorg-3.4.0-rc3, llvmorg-3.4.0-rc2, llvmorg-3.4.0-rc1, llvmorg-3.3.1-rc1, llvmorg-3.3.0, llvmorg-3.3.0-rc3, llvmorg-3.3.0-rc2, llvmorg-3.3.0-rc1, llvmorg-3.2.0, llvmorg-3.2.0-rc3, llvmorg-3.2.0-rc2, llvmorg-3.2.0-rc1 |
|
#
8ba353da |
| 23-Oct-2012 |
Pete Cooper <peter_cooper@apple.com> |
Fixed bug in SmallDenseMap where it wouldn't leave enough space for an empty bucket if the number of values was exactly equal to the small capacity. This led to an infinite loop when finding a non-e
Fixed bug in SmallDenseMap where it wouldn't leave enough space for an empty bucket if the number of values was exactly equal to the small capacity. This led to an infinite loop when finding a non-existent element
llvm-svn: 166492
show more ...
|
#
4de807a5 |
| 17-Jun-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Add a unit test for 'swap', and fix a pile of bugs in SmallDenseMap::swap.
First, make it parse cleanly. Yay for uninstantiated methods.
Second, make the inline-buckets case work correctly. This is
Add a unit test for 'swap', and fix a pile of bugs in SmallDenseMap::swap.
First, make it parse cleanly. Yay for uninstantiated methods.
Second, make the inline-buckets case work correctly. This is way trickier than it should be due to the uninitialized values in empty and tombstone buckets.
Finally fix a few typos that caused construction/destruction mismatches in the counting unittest.
llvm-svn: 158641
show more ...
|
#
a1be842f |
| 17-Jun-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Add tests for *DenesMap for both key and value types' construction and destruction and fix a bug in SmallDenseMap they caught.
This is kind of a poor-man's version of the testing that just adds the
Add tests for *DenesMap for both key and value types' construction and destruction and fix a bug in SmallDenseMap they caught.
This is kind of a poor-man's version of the testing that just adds the addresses to a set on construction and removes them on destruction. We check that double construction and double destruction don't occur. Amusingly enough, this is enough to catch a lot of SmallDenseMap issues because we spend a lot of time with fixed stable addresses in the inline buffer.
The SmallDenseMap bug fix included makes grow() not double-destroy in some cases. It also fixes a FIXME there, the code was pretty crappy. We now don't have any wasted initialization, but we do move the entries in inline bucket array an extra time. It's probably a better tradeoff, and is much easier to get correct.
llvm-svn: 158639
show more ...
|