Evgeniy Stepanov
906c872db9
Cleanup: move visibility/linkage attributes to the first declaration.
...
This change moves visibility attributes from out-of-class method
definitions to in-class declaration. This is needed for a switch to
attribute((internal_linkage)) (see http://reviews.llvm.org/D13925 )
which can only appear on the first declaration.
This change does not touch istream/ostream/streambuf. They are
handled separately in http://reviews.llvm.org/D14409 .
llvm-svn: 252385
2015-11-07 01:22:13 +00:00
Marshall Clow
e3fbe1433b
Implement the first part of N4258: 'Cleaning up noexcept in the Library'. This patch deals with swapping containers, and implements a more strict noexcept specification (a conforming extension) than the standard mandates.
...
llvm-svn: 242056
2015-07-13 20:04:56 +00:00
Howard Hinnant
3af48ef76e
G M: Changes all references to "x inline" to "inline x" where x = _libcpp_always_inline or _libcpp_inline_visibility macros.
...
The patch touches these files:
locale
array
deque
new
string
utility
vector
__bit_reference
__split_buffer
locale_win32.h
There is no intended functionality change and it is expected that reversing the position of the inline keyword with regard to the other keywords does not change the meaning of anything, least not for apple/Linux etc.
It is intended to make libcxx more consistent with itself and to prevent the 1000 or so
"inline.cpp(3) : warning C4141: 'inline' : used more than once" warnings that MS's cl.exe compiler emits without this patch, i.e. if inline is not the first keyword before a function name etc.
Prefer "inline [other inline related keyword]" over "[other related keyword] inline".
After this patch, libcxx should be consistent to this pattern.
llvm-svn: 191987
2013-10-04 22:09:00 +00:00
Howard Hinnant
14e200d14d
Implement full support for non-pointer pointers in custom allocators for deque.
...
llvm-svn: 184673
2013-06-23 21:17:24 +00:00
Howard Hinnant
aba500d633
Revert accidental check-in. These changes are probably good, but premature at this point.
...
llvm-svn: 174625
2013-02-07 15:31:44 +00:00
Howard Hinnant
804f9116e5
Michael van der Westhuizen: The attached patch add support for building against libc++abi and libcxxrt to CMake builds of libc++.
...
Usage (with the appropriate CC and CXX environment variables) is:
$ cmake -DLIBCXX_CXX_ABI=libcxxabi '-DLIBCXX_LIBCXXABI_INCLUDE_PATHS=/home/michael/libcxxabi/include' ../libcxx
and:
$ cmake -DLIBCXX_CXX_ABI=libcxxrt '-DLIBCXX_LIBCXXRT_INCLUDE_PATHS=/home/michael/libcxxrt/src' ../libcxx
llvm-svn: 174623
2013-02-07 15:27:39 +00:00
Howard Hinnant
9741d6c96e
Implement a few optimizations for vector push_back and insert. Fixes r10828365.
...
llvm-svn: 150542
2012-02-15 00:41:34 +00:00
Howard Hinnant
c206366fd7
Quash a whole bunch of warnings
...
llvm-svn: 145624
2011-12-01 20:21:04 +00:00
Howard Hinnant
c003db1fca
Further macro protection by replacing _[A-Z] with _[A-Z]p
...
llvm-svn: 145410
2011-11-29 18:15:50 +00:00
Howard Hinnant
ab4f438239
Add protection from min/max macros
...
llvm-svn: 145407
2011-11-29 16:45:27 +00:00
Howard Hinnant
073458b1ab
Windows support by Ruben Van Boxem.
...
llvm-svn: 142235
2011-10-17 20:05:10 +00:00
Howard Hinnant
8668139f36
Fix const correctness bug in __move_assign. Found and fixed by Ion Gaztañaga.
...
llvm-svn: 139032
2011-09-02 20:42:31 +00:00
Howard Hinnant
b1e3e0e59e
__split_buffer should only require default constructible. Bug found and fixed by Jared Hoberock
...
llvm-svn: 138726
2011-08-28 15:21:29 +00:00
Howard Hinnant
ce48a1137d
_STD -> _VSTD to avoid macro clash on windows
...
llvm-svn: 134190
2011-06-30 21:18:19 +00:00
Howard Hinnant
801291139c
After sleeping on it I've decided that all special members that can be noexcept, should be declared so. The client has the traits to detect and branch on this information, and it is often an important optimization. Give deque() a noexcept. Add test for deque default constructor and deque destructor.
...
llvm-svn: 132549
2011-06-03 15:16:49 +00:00
Howard Hinnant
9eebe11dd5
I've become quite disatsified with the lack of noexcept specifications on container move construction, move assignment operator and swap. Without proper decoration on at least move construction, vectors of containers will have unacceptable performance. Here's the fix for deque.
...
llvm-svn: 132480
2011-06-02 20:00:14 +00:00
Howard Hinnant
36fd9f96cf
Reverting an old optimization that conflicts with the new allocator model, and causes some test casees to compile that shouldn't.
...
llvm-svn: 122830
2011-01-04 19:53:31 +00:00
Michael J. Spencer
f5799be4a8
Add CMake build and fix major Linux blockers.
...
llvm-svn: 121510
2010-12-10 19:47:54 +00:00
Howard Hinnant
ca74048398
N3142. Many of these traits are just placeholders with medium quality emulation; waiting on compiler intrinsics to do it right.
...
llvm-svn: 119854
2010-11-19 22:17:28 +00:00
Howard Hinnant
f5ab703f68
visibility-decoration.
...
llvm-svn: 114470
2010-09-21 20:16:37 +00:00
Howard Hinnant
7609c9b665
Changed __config to react to all of clang's currently documented has_feature flags, and renamed _LIBCPP_MOVE to _LIBCPP_HAS_NO_RVALUE_REFERENCES to be more consistent with the rest of the libc++'s flags, and with clang's nomenclature.
...
llvm-svn: 113086
2010-09-04 23:28:19 +00:00
Howard Hinnant
b3371f6f49
Fixing whitespace problems
...
llvm-svn: 111750
2010-08-22 00:02:43 +00:00
Howard Hinnant
189b212662
First loop test passed. The data structure and search algorithm is still crude and in-flux. But this milestone needed to be locked in. Right now every loop is implemented in terms of a structure that will handle the most complicated {min, max} loop. Though only *-loops are tested at the moment. In a future iteration *-loops will likely be optimized a little more. The only tests are for basic posix so far, but I have prototype code running for extended posix and ecma. The prototype code lacks the complicating properties of the real <regex> requirements though.
...
llvm-svn: 107803
2010-07-07 19:14:52 +00:00
Howard Hinnant
deb23ecdf9
[rand.dist.bern.bin]. The evaluation function for this binomial distribution is hopefully just a placeholder. It is using the simplest and slowest method for computing the distribution and needs to be upgraded.
...
llvm-svn: 103524
2010-05-11 23:26:59 +00:00
Howard Hinnant
3e519524c1
libcxx initial import
...
llvm-svn: 103490
2010-05-11 19:42:16 +00:00