| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch is the first in a series of patches that's meant to better
support unordered_map. unordered_map has a special "value_type" that
differs from pair<const Key, Value>. In order to meet the EmplaceConstructible
and CopyInsertable requirements we need to teach __hash_table about this
special value_type.
This patch creates a "__hash_node_types" traits class that contains
all of the typedefs needed by the unordered containers and it's iterators.
These typedefs include ones for each node type and node pointer type,
as well as special typedefs for "unordered_map"'s value type.
As a result of this change all of the unordered containers now all support
incomplete types.
As a drive-by fix I changed the difference_type in __hash_table to always
be ptrdiff_t. There is a corresponding change to size_type but it cannot
take affect until an ABI break.
This patch will be followed up shortly with fixes for various unordered_map
fixes.
llvm-svn: 260012
|
|
|
|
|
|
|
| |
This allows to find the LLVM's CMake files after moving them in
r259821.
llvm-svn: 259842
|
|
|
|
|
|
|
|
|
|
| |
Rather than crashing in match_results::format() when a reference to a
marked subexpression is out of range, format the subexpression as empty
(i.e., replace it with an empty string). Note that
match_results::operator[]() has a range-check and returns a null match
in this case, so this just re-uses that logic.
llvm-svn: 259682
|
|
|
|
| |
llvm-svn: 259281
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of excluding all known operating systems that are not derived from BSD,
I now include all operating systems that claim to be derived from BSD.
Hopefully, that will make it so that this check doesn't need to change for
every new operating system that comes along.
http://reviews.llvm.org/D16634
llvm-svn: 259193
|
|
|
|
|
|
| |
Differential revision: http://reviews.llvm.org/D16651
llvm-svn: 259091
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This is a workaround to a clang bug which causes libcxx tests to fail in the 3.8
release. The clang bug is currently being investigated. It seems that clang
does not stop after frontend errors when using -verify and -fno-integrated-as
(or when this is the default). This patch adds -fsyntax-only to prevent GAS
from being called, fixing the libcxx failures.
PR26277
Patch by Eric Fiselier
Reviewers: mclow.lists, hans, EricWF
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D16584
llvm-svn: 259046
|
|
|
|
|
|
|
|
|
| |
by -Wpadded.
We don't need these pragmas anymore because -Wpadded was removed from
buildit in r258900.
llvm-svn: 259023
|
|
|
|
| |
llvm-svn: 259015
|
|
|
|
| |
llvm-svn: 259014
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
These are the tests that didn't fail in the release candidate because they were
covered by another 'REQUIRES' directive.
Reviewers: mclow.lists, hans, bcraig, EricWF
Subscribers: EricWF, dim, cfe-commits
Differential Revision: http://reviews.llvm.org/D16408
llvm-svn: 258920
|
|
|
|
|
|
|
|
|
|
| |
Per discussion with Eric and Joerg, this commit removes -Wpadded to
silence the warning about the padding inserted at the tail of struct
_Rep_base.
rdar://problem/23932550
llvm-svn: 258900
|
|
|
|
| |
llvm-svn: 258893
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This patch is similar to the <list> fix but it has a few differences. This patch doesn't use a `__link_pointer` typedef because we don't need to change the linked list pointers because `forward_list` never stores a `__forward_begin_node` in the linked list itself.
The issue with `forward_list` is that the iterators store pointers to `__forward_list_node` and not `__forward_begin_node`. This is incorrect because `before_begin()` and `cbefore_begin()` return iterators that point to a `__forward_begin_node`. This means we incorrectly downcast the `__forward_begin_node` pointer to a `__node_pointer`. This downcast itself is sometimes UB but it cannot be safely removed until ABI v2. The more common cause of UB is when we deference the downcast pointer. (for example `__ptr_->__next_`). This can be fixed without an ABI break by upcasting `__ptr_` before accessing it.
The fix is as follows:
1. Introduce a `__iter_node_pointer` typedef that works similar to `__link_pointer` in the last patch. In ABI v2 it is always a typedef for `__begin_node_pointer`.
2. Change the `__before_begin()` method to return the correct pointer type (`__begin_node_pointer`),
Previously it incorrectly downcasted the `__forward_begin_node` to a `__node_pointer` so it could be used to constructor the iterator types.
3. Change `__forward_list_iterator` and `__forward_list_const_iterator` in the following way:
1. Change `__node_pointer __ptr_;` member to have the `__iter_node_pointer` type instead.
2. Add additional private constructors that accept `__begin_node_pointer` in addition to `__node_pointer` and then correctly cast them to the stored `__iter_node_pointer` type.
3. Add `__get_begin()` and `__get_node_unchecked()` accessor methods that correctly cast `__ptr_` to the expected pointer type. `__get_begin()` is always safe to use and should be
preferred. `__get_node_unchecked()` can only be used on a deferencible iterator.
4. Replace direct access to `__forward_list_iterator::__ptr_` with the safe accessor methods.
Reviewers: mclow.lists, EricWF
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D15836
llvm-svn: 258888
|
|
|
|
| |
llvm-svn: 258855
|
|
|
|
|
|
| |
Michael Daniels.
llvm-svn: 258852
|
|
|
|
|
|
| |
It was useless, and didn't actually *do anything* with the allocator. Now it's gone. On the off chance that someone is mistakenly calling it, it's only gone in C++1z
llvm-svn: 258697
|
|
|
|
|
|
|
|
| |
This reverts commit r258575. EricWF sent me an email (no link since it
was off-list) requesting to review this pre-commit instead of
post-commit.
llvm-svn: 258625
|
|
|
|
| |
llvm-svn: 258593
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
An upcoming commit will add an optimization to insert() that avoids
unnecessary mallocs when we can safely extract the key type. This
commit shares code between emplace() and insert():
- if emplace() is given a single argument, and
- value_type is constructible from that argument
so that we have a single code path for the two.
I also updated the debug version of emplace_hint() to defer to
emplace(), like the non-debug version does.
In both cases, there should be NFC here.
llvm-svn: 258575
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rename the version of __construct_node() that takes a hash as an
argument to __construct_node_hash(), and use perfect-forwarding when
Rvalue references are available. The primary motivation is to allow
other types through, since unordered_map's value_type is different from
__hash_table's value_type -- a follow-up will take advantage of this --
but the rename is general "goodness".
There should be no functionality change here (aside from enabling the
follow-up).
llvm-svn: 258511
|
|
|
|
| |
llvm-svn: 258491
|
|
|
|
|
|
| |
Introduced a new (internal) type trait '__is_referenceable' with tests. Use that trait in add_lvalue_reference, add_rvalue_reference and add_pointer.
llvm-svn: 258418
|
|
|
|
|
|
|
|
|
|
| |
Reviewers: mclow.lists, hans
Subscribers: bcraig, cfe-commits
Differential Revision: http://reviews.llvm.org/D16406
llvm-svn: 258403
|
|
|
|
|
|
| |
test with GCC.
llvm-svn: 258292
|
|
|
|
|
|
| |
r258281.
llvm-svn: 258291
|
|
|
|
| |
llvm-svn: 258287
|
|
|
|
| |
llvm-svn: 258281
|
|
|
|
|
|
| |
are disabled
llvm-svn: 258279
|
|
|
|
| |
llvm-svn: 258270
|
|
|
|
| |
llvm-svn: 258217
|
|
|
|
| |
llvm-svn: 258198
|
|
|
|
| |
llvm-svn: 258196
|
|
|
|
| |
llvm-svn: 258195
|
|
|
|
|
|
| |
as http://reviews.llvm.org/D16262
llvm-svn: 258107
|
|
|
|
| |
llvm-svn: 257707
|
|
|
|
| |
llvm-svn: 257702
|
|
|
|
| |
llvm-svn: 257696
|
|
|
|
|
|
| |
strong exception safety guarantee'. This turned out to be a pervasive problem in <string>, which required a fair amount of rework. Add in an optimization for when iterators provide noexcept increment/comparison/assignment/dereference (which covers many of the iterators in libc++). Reviewed as http://reviews.llvm.org/D15862
llvm-svn: 257682
|
|
|
|
| |
llvm-svn: 257629
|
|
|
|
|
|
|
| |
WebAssembly's integer division instruction traps on division by zero; set the
traps field of integral std::numeric_limits to true.
llvm-svn: 257612
|
|
|
|
| |
llvm-svn: 257506
|
|
|
|
|
|
| |
Fixes bugs #26120 and #26121. Thanks to Jonathan Wakely for the reports and the patches.
llvm-svn: 257474
|
|
|
|
|
|
| |
right place.
llvm-svn: 257422
|
|
|
|
|
|
| |
of __murmur2_or_cityhash. This lets people use the unsigned integer overflow checker in UBSAN w/o getting hits from libc++'s hash code (where the unsigned integer overflow is legal and deliberate)> Patch by @danielaustin. Reviewed as: http://reviews.llvm.org/D15973
llvm-svn: 257368
|
|
|
|
|
|
| |
iostreams."
llvm-svn: 257193
|
|
|
|
|
|
|
| |
r251131 replaced LANG with LC_COLLATE. But LC_ALL has precedence
over both, so the test still fails when LC_ALL=C.
llvm-svn: 257018
|
|
|
|
|
|
| |
already. NFC
llvm-svn: 256864
|
|
|
|
|
|
| |
functional change
llvm-svn: 256861
|
|
|
|
|
|
| |
braced-init syntax'
llvm-svn: 256859
|