| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 178892
|
|
|
|
|
|
| |
http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20130325/077133.html
llvm-svn: 178581
|
|
|
|
|
|
| |
http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20130325/077132.html
llvm-svn: 178545
|
|
|
|
|
|
| |
http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20130325/077131.html
llvm-svn: 178544
|
|
|
|
|
|
| |
http://llvm.org/bugs/show_bug.cgi?id=15624.
llvm-svn: 178354
|
|
|
|
| |
llvm-svn: 178267
|
|
|
|
|
|
| |
-fsanitize=address on the test suite.
llvm-svn: 177452
|
|
|
|
|
|
| |
should be no functionality change. Clients should see no ABI differences.
llvm-svn: 177443
|
|
|
|
|
|
| |
just check to see if they are defined.
llvm-svn: 177310
|
|
|
|
| |
llvm-svn: 177297
|
|
|
|
| |
llvm-svn: 177291
|
|
|
|
|
|
| |
load time initializers and this is a big one. No visible functionality change intended.
llvm-svn: 177212
|
|
|
|
|
|
| |
two flags: _LIBCPP_TYPE_VIS and _LIBCPP_FUNC_VIS. This is in preparation for taking advantage of clang's new __type_visibility__ attribute.
llvm-svn: 176593
|
|
|
|
| |
llvm-svn: 174642
|
|
|
|
| |
llvm-svn: 174637
|
|
|
|
| |
llvm-svn: 174636
|
|
|
|
| |
llvm-svn: 174611
|
|
|
|
|
|
|
|
|
|
|
| |
differences can cause
template typename deductions on swap<> (used in string.cpp). Use
decltype(errno) to replicate the type and qualifier information for holding the
errno value. Because errno is expected to be assignable, there is no need to
use typename std::remove_const<decltype(errno)>::type to hold the value.
llvm-svn: 173172
|
|
|
|
|
|
|
|
|
| |
but not used when
building against libsupc++ as the functions for which they are used are provided
by libsupc++. Simply preprocess them away when building against libsupc++.
llvm-svn: 173165
|
|
|
|
|
|
| |
http://llvm.org/bugs/show_bug.cgi?id=14934.
llvm-svn: 172456
|
|
|
|
|
|
| |
http://llvm.org/bugs/show_bug.cgi?id=14919.
llvm-svn: 172447
|
|
|
|
|
|
|
|
|
| |
potentially not being able to be
inlined. These do not need to be always-inlined for ABI stability because they are not exported beyond this source due to the unnamed namespace.
Also simplified use of the Wmissing-field-initializers pragma as was done for clang.
llvm-svn: 171202
|
|
|
|
| |
llvm-svn: 171173
|
|
|
|
| |
llvm-svn: 171169
|
|
|
|
| |
llvm-svn: 171167
|
|
|
|
|
|
| |
GCC (4.7.2).
llvm-svn: 171165
|
|
|
|
| |
llvm-svn: 170967
|
|
|
|
|
|
| |
http://llvm.org/bugs/show_bug.cgi?id=14585.
llvm-svn: 170026
|
|
|
|
| |
llvm-svn: 169036
|
|
|
|
|
|
| |
other system code.
llvm-svn: 167038
|
|
|
|
| |
llvm-svn: 163120
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
functions to protect against duration and time_point overflow. Since
we're about to wait anyway, we can afford to spend a few more cycles on
this checking. I purposefully did not treat the timed try_locks with
overflow checking. This fixes
http://llvm.org/bugs/show_bug.cgi?id=13721 . I'm unsure if the standard
needs clarification in this area, or if this is simply QOI. The
<chrono> facilities were never intended to overflow check, but just to
not overflow if durations stayed within +/- 292 years.
llvm-svn: 162925
|
|
|
|
|
|
| |
throw an exception. Fixes http://llvm.org/bugs/show_bug.cgi?id=13082.
llvm-svn: 162613
|
|
|
|
| |
llvm-svn: 162188
|
|
|
|
|
|
| |
bits for 64 bit targets. This is controls the data layout of all exceptions defined in <stdexcept>. This aligns the ABI with that of gcc-4.2.
llvm-svn: 161497
|
|
|
|
|
|
|
|
|
|
| |
tm' in
__time_get_storage<char> to match the initialization behavior in
__time_get_storage<wchar>. Without the initialization, valgrind
reports errors in the subsequent calls to strftime_l.
llvm-svn: 161196
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Linux are
localization/locale.categories/category.collate/category.ctype/locale.ctype.byname/is_1.pass.cpp
and scan_is.pass.cpp. The tests fail when the character class being
tested is compound, like ctype_base::alnum or ctype_base::graph,
because the existing series of conditionals in do_is an do_scan_is
will abort too early. For instance, if the character class being
tested is alnum, and the character is numeric, do_is will return false
because iswalpha_l will return false, 'result' becomes false, and the
'true' result from the later call to iswdigit_l ends up being ignored
. A similar problem exists in do_scan_is.
llvm-svn: 161192
|
|
|
|
|
|
|
| |
std::thread::hardware_concurrency for platforms that don't offer
sysctl, but do provide a POSIX sysconf and _SC_NPROCESSORS_ONLN.
llvm-svn: 161190
|
|
|
|
|
|
| |
I've put a small spin in __sp_mut::lock() on std::mutex::try_lock(), which is testing quite well. In my experience, putting in a yield for every failed iteration is also a major performance booster. This change makes one of the performance tests I was using (a highly contended one) run about 20 times faster.
llvm-svn: 160967
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
section in libc++. This requires a recompiled dylib. Failure to rebuild
the dylib will result in a link-time error if and only if the functions from
[util.smartptr.shared.atomic] are used.
The implementation is not lock free. After considerable thought, I know of no
way to make the implementation lock free. Ideas welcome along that front. But
changing the ABI of shared_ptr is not on the table at this point.
The mutex used to lock these function is encapsulated by std::__sp_mut. The
only thing the client knows about std::__sp_mut is that it has a void* data
member, can't be constructed, and has lock and unlock members. Within the
binary __sp_mut is currently implemented as a pointer to a std::mutex. That can
change in the future without disturbing the ABI (as long as sizeof(__sp_mut)
remains constant.
I specifically did not make __sp_mut a spin lock as I have a pathological
distrust of spin locks. Testing on OS X reveals that the use of std::mutex in
this role is not a large performance penalty as long as the contention for the
mutex is low (more likely to get the lock than to have to wait). In the future
we can still make __sp_mut a spin lock if that is what is desired (without ABI
damage).
The dylib contains 16 __sp_mut's to be chosen based on the hash of the address
of the shared_ptr. The constant 16 is a ball-park reasonable space/time
tradeoff.
std::hash<T*> was changed to call __murmur2_or_cityhash, instead of the identity
function. I had thought we had already done this, but I was mistaken.
All of this is under #if __has_feature(cxx_atomic) even though the
implementation is not lock free, because the signatures require access to
std::memory_order, which is currently available only under
__has_feature(cxx_atomic).
llvm-svn: 160940
|
|
|
|
|
|
|
|
|
|
|
|
| |
typeinfo.cpp. Both new.cpp and typeinfo.cpp have code that is conditionally compiled
based on the LIBCXXRT and _LIBCPPABI_VERSION defines, but those files
do not currently include <cxxabi.h> in the non __APPLE__ case. The
attached patch updates those files so that for non __APPLE__ builds
<cxxabi.h> is included if available or if LIBCXXRT is set. I'm
modeling this on the recent updates to exception.cpp.
llvm-svn: 160790
|
|
|
|
|
|
| |
platform-provided macro on some systems) to _LIBCPP_NORETURN.
llvm-svn: 160773
|
|
|
|
| |
llvm-svn: 160607
|
|
|
|
| |
llvm-svn: 160606
|
|
|
|
| |
llvm-svn: 160605
|
|
|
|
| |
llvm-svn: 160604
|
|
|
|
| |
llvm-svn: 160593
|
|
|
|
| |
llvm-svn: 160579
|
|
|
|
| |
llvm-svn: 160038
|
|
|
|
| |
llvm-svn: 159902
|