Commit Graph

1370 Commits

Author SHA1 Message Date
Howard Hinnant 6d48bdd2a8 G M: 1. It changes the temp file handling to use the template and the current directory for windows, matching how it works on other platforms.
2. It re-enables the temp file handling for mingw that regressed.

llvm-svn: 192073
2013-10-06 21:14:05 +00:00
Howard Hinnant 04c63bdb36 G M: Rename local variable from __except to avoid MSVC keyword clash.
llvm-svn: 192072
2013-10-06 21:00:29 +00:00
Howard Hinnant 32f9a776fb Use _LIBCPP_NEW_DELETE_VIS instead of LIBCPP_FUNC_VIS in src/new.cpp.
llvm-svn: 192071
2013-10-06 20:53:24 +00:00
Howard Hinnant f66a81ad56 Yaron Keren: Add missing comment.
llvm-svn: 192068
2013-10-06 19:48:40 +00:00
Marshall Clow 82f4901d5f LWG Issue 2247
llvm-svn: 192058
2013-10-06 07:19:23 +00:00
Marshall Clow 4fc5ae4c1c Updated status post-Chicago
llvm-svn: 192057
2013-10-06 07:10:55 +00:00
Marshall Clow d2f095e5ba Add tests making sure that optional<T>s can be compared at compile time; this functionality was enabled by N3789
llvm-svn: 192051
2013-10-05 23:29:16 +00:00
Marshall Clow dbd2ebb07e LWG Issue 2247: Implement type trait 'is_null_pointer'
llvm-svn: 192049
2013-10-05 21:21:17 +00:00
Marshall Clow ea7c7cc521 Implement literal suffixes for compled
llvm-svn: 192048
2013-10-05 21:19:49 +00:00
Marshall Clow 3ceafc7f01 Mark namespaces for user defined literals as 'inline'
llvm-svn: 192047
2013-10-05 21:18:32 +00:00
Marshall Clow de9320aa2b Implement LWG issue 2275 'forward_as_tuple should be constexpr'
llvm-svn: 192038
2013-10-05 18:46:37 +00:00
Howard Hinnant 68a2610520 G M: Remove unneeded warnings in buildit that are hindering porting.
llvm-svn: 192012
2013-10-05 00:13:31 +00:00
Howard Hinnant 4e07b5b955 G M: Attached is a patch for libcxx's cmake file.
I've changed it so we don't set highest level warnings (all) for MSVC when building projects using cmake and instead leave the default. That's /W4 on my machine and seems to be ok.
 
With all warnings on for msvc, we see literally thousands of warnings. 99.99% aren't relevant and just obscure the ones that are.
I think the user can still override things if they want something different from the command line when using cmake.

llvm-svn: 192010
2013-10-05 00:07:35 +00:00
Howard Hinnant a942f2ffd7 G M: The attached patch is for libcxx's new.cpp and __config files. The patch's intent is to make new.cpp compile using MS's cl.exe compiler without changing the meaning of anything for any other compiler.
The issue this patch seeks to address is that MS's compiler (cl.exe) doesn't support the __attribute__((__weak__)) or __atribute__((__visibility__("default")) syntax; so a solution must be found where cl.exe doesn't see this syntax.

This patch seeks to solve this problem by changing code patterned like this:
__attribute__((__weak__, __visibility__("default")))
void* operator new(size_t size, const std::nothrow_t&) _NOEXCEPT { /*snip*/; return p; }

to code like this:
_LIBCPP_WEAK
void* operator new(size_t size, const std::nothrow_t&) _NOEXCEPT { return p; }

Howard:  Thanks for all the comments regarding the default visibility
tag on the definition.  I agree it isn't needed, and that there are lots
of other places where it is missing.  That being said, I'm not wanting
to rock the boat on that issue right now.  So I've added it back to the
definition via _LIBCPP_FUNC_VIS.  A later pass dedicated just to this
issue can bring things in to a consistent state one way or the other. 
Note that we do not want to have the exact same attributes on the
declaration and defintion in this case.  The declaration should not be
marked weak, whereas the definition should (which is what G M's patch
did). I've fully tested on OS X to ensure that the resultant attribute
syntax actually works.

llvm-svn: 192007
2013-10-04 23:56:37 +00:00
Howard Hinnant 79710108a4 G M: A small patch to fix a couple of warnings in stdexcept.cpp for cl.exe which does not support #pragma visibility.
llvm-svn: 191988
2013-10-04 22:12:59 +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 f7a8c4f347 G M: Fix libcxx's detection of rtti disablement for g++.exe and cl.exe. When RTTI is NOT enabled, _LIBCPP_NO_RTTI is defined.
llvm-svn: 191981
2013-10-04 21:24:21 +00:00
Howard Hinnant 80b84d4c26 G M: Provides the _LIBCPP_WARNING macro, to be used for MSVC only, since that compiler doesn't support #warning.
llvm-svn: 191980
2013-10-04 21:14:44 +00:00
Peter Collingbourne db21c7bbb0 libc++abi no longer has a cxa_demangle.h header.
llvm-svn: 191935
2013-10-03 22:58:36 +00:00
Peter Collingbourne 3a572699e4 Re-add bad_cast and bad_typeid default ctor definitions under libsupc++.
libsupc++ declares these constructors inline, so we won't necessarily
get a definition for them in the library.

llvm-svn: 191931
2013-10-03 22:04:10 +00:00
Peter Collingbourne 4806fcd697 Make it possible to run the test suite when built as part of LLVM.
llvm-svn: 191930
2013-10-03 21:58:25 +00:00
Alexey Samsonov eb38496950 Explicitly specify -Wno-error if LIBCXX_ENABLE_WERROR is false.
libcxx doesn't build with -Werror because of #warnings in its source
code. But when libcxx is built as an external LLVM project, it inherits
LLVM build flags, breaking the build if LLVM_ENABLE_WERROR is enabled.

llvm-svn: 191814
2013-10-02 07:44:19 +00:00
Marshall Clow ad864049d6 Remove non-printable chars that snuck in back in July; thanks to Yaron Keren for the catch
llvm-svn: 191756
2013-10-01 13:28:20 +00:00
Marshall Clow 45b983c4d0 Part 8 of LWG Issue 2210' unordered_set and unordered multiset; this got missed when I went on vacation
llvm-svn: 191705
2013-09-30 21:33:51 +00:00
Howard Hinnant 9fd9f84f48 SCARY/N2913 iterator support between the multi and non-multi versions of the associative and unordered containers. I beleive lack of support for this was accidentally recently introduced (by me) and this is fixing a regression. This time tests are put in to prevent such a regression in the future.
llvm-svn: 191692
2013-09-30 19:08:22 +00:00
Alexey Samsonov 1859544071 [CMake] Put libcxx-specific module directories to the front of CMAKE_MODULE_PATH.
Otherwise if libcxx is built as an LLVM external project (after r191624),
"include(config-ix)" will include config-ix.cmake from LLVM, not from libcxx,
which will result in misconfigured build tree.

llvm-svn: 191657
2013-09-30 09:10:01 +00:00
Marshall Clow 3d5134dd52 Implement n3789; constexpr support in named function objects
llvm-svn: 191626
2013-09-28 19:06:12 +00:00
Marshall Clow 8392ab209e Add a set of macros for using the new '[[[deprecated]]' attribute. No code changes (yet)
llvm-svn: 191625
2013-09-28 18:35:31 +00:00
Marshall Clow ba132bb198 Fixed bad link for n3789; thanks to Chip Davis for the catch
llvm-svn: 191598
2013-09-28 01:52:18 +00:00
Marshall Clow 66a49bd240 Updated my role
llvm-svn: 191596
2013-09-28 01:25:55 +00:00
Marshall Clow 2cf77525be Missed a change that didn't have an issue number 'GB 9'
llvm-svn: 191575
2013-09-27 22:21:17 +00:00
Marshall Clow ff1b7ef31b Updated table with results from Chicago
llvm-svn: 191573
2013-09-27 22:16:32 +00:00
Chandler Carruth 0e99d99f77 Make the guard for external ABI libraries include the guard for
libsupc++ in typeinfo.cpp, bringing it into agreement with
exception.cpp. This fixes link errors due to duplicate symbols from
this translation unit.

llvm-svn: 191397
2013-09-25 20:01:44 +00:00
Howard Hinnant 12bfc4fef1 Peter Collingbourne: Fix warnings when compiling with -DNDEBUG.
llvm-svn: 191148
2013-09-21 21:26:37 +00:00
Howard Hinnant 7a828034c6 Peter Collingbourne: If a pointer is passed as the third argument of the (iterator,
iterator, allocator) constructor with the intention of it being
implicitly converted to the allocator type, it is possible for overload
resolution to favour the (iterator, iterator, enable_if) constructor.
Eliminate this possibility by moving the enable_if to one of the
existing arguments and removing the third argument.

llvm-svn: 191145
2013-09-21 21:13:54 +00:00
Howard Hinnant ff29d538ea Apply LWG 2048. It is amazing to me that this actually works, but the existing tests confirm that it does. c++1y status page now showing libc++ is complete for c++1y modulo dynarray issues.
llvm-svn: 191142
2013-09-21 19:25:37 +00:00
Howard Hinnant f13cf89df2 Apply LWG 2021. This is only a documentation change. Also bringing c++1y status page up to date.
llvm-svn: 191141
2013-09-21 18:17:23 +00:00
Howard Hinnant b76e6a95a9 Apply LWG 2017. This is a only a documentation change.
llvm-svn: 191140
2013-09-21 17:58:58 +00:00
Howard Hinnant ead6f1699d N3659: Shared locking in C++ Revision 2, c++1y only
llvm-svn: 191127
2013-09-21 01:49:28 +00:00
Howard Hinnant b1c82cd090 David Chisnall: macro protect 'test' in __has_pointer_type_imp.
llvm-svn: 191126
2013-09-21 01:45:05 +00:00
Joerg Sonnenberger 8092c957d2 Fix typo.
llvm-svn: 190857
2013-09-17 08:46:53 +00:00
Howard Hinnant 5f878d4bd2 G M: Restore the ability for libcxx to compile again on mingw 64.
llvm-svn: 190837
2013-09-17 01:34:47 +00:00
Howard Hinnant 3b2d7ee18c Marshall Clow: LWG Issue 2056: future_errc enums start with value 0 (invalid value for broken_promise).
llvm-svn: 190756
2013-09-14 18:20:10 +00:00
Marshall Clow a369cb6280 LWG Issue 2210 (Part #7): vector and vector<bool>
llvm-svn: 190736
2013-09-14 00:47:59 +00:00
Howard Hinnant 84f996fb2e G M: Make shared_ptr a little more gentle for some compilers. No impact on clang.
llvm-svn: 190732
2013-09-13 23:56:00 +00:00
Howard Hinnant f35fc7ad74 G M: Make valarray a little more forgiving to compilers not quite so gifted. This has no impact on clang.
llvm-svn: 190731
2013-09-13 23:27:42 +00:00
Marshall Clow 9a08837ba3 Fix link to dynarray issue
llvm-svn: 190707
2013-09-13 17:32:32 +00:00
Marshall Clow 63d233b6ce Update status for <dynarray>
llvm-svn: 190700
2013-09-13 15:37:11 +00:00
Marshall Clow ef6f1151b0 Initial implementation of <dynarray>. No allocator support pending resolution of LWG #2235; no stack allocation pending compiler support
llvm-svn: 190697
2013-09-13 15:22:55 +00:00
Marshall Clow b387ea89a6 Test for 'bad_array_length'; got left out of initial commit
llvm-svn: 190614
2013-09-12 17:01:38 +00:00
Marshall Clow 3cd37e6456 LWG Issue 2210 (Part #6): unordered_map and unordered_multimap
llvm-svn: 190576
2013-09-12 03:00:31 +00:00
Marshall Clow 50c003b577 Implement uses-allocator construction
llvm-svn: 190571
2013-09-12 02:11:16 +00:00
Howard Hinnant 872ac4b5f0 A collection of minor type-o fixes. The first two aren't testable, but all tests pass with them. I stumbled across them while experimenting with a std::move that checks its argument for non-const. The third corrects a test that is currently failing.
llvm-svn: 190563
2013-09-12 00:10:44 +00:00
Marshall Clow 6e8ebb2ce9 Adding bad_array_length to libc++
llvm-svn: 190478
2013-09-11 01:38:42 +00:00
Marshall Clow fbc317d480 LWG Issue #2210 Part 5 - map/multimap; no, really - the last one was set/multiset. THIS is map/multimap
llvm-svn: 190474
2013-09-11 01:15:47 +00:00
Marshall Clow 0a55d17bcd LWG Issue #2210 Part 4 - map/multimap
llvm-svn: 190454
2013-09-11 00:06:45 +00:00
Marshall Clow f1b6d1b538 Update synopsis for list/forward_list/deque to match the allocator style of existing comment. No code change
llvm-svn: 190320
2013-09-09 18:19:45 +00:00
Marshall Clow cdd01917ff Remove a tab that snuck in
llvm-svn: 190283
2013-09-08 21:13:57 +00:00
Howard Hinnant 224ccb38d3 Fix minor type-o in tests.
llvm-svn: 190280
2013-09-08 19:28:51 +00:00
Marshall Clow fb8297668f LWG Issue 2210 (Part #2 & #3): list and forward_list
llvm-svn: 190279
2013-09-08 19:11:51 +00:00
Marshall Clow 630c5e535c LWG Issue 2210 (Part #1): deque
llvm-svn: 190251
2013-09-07 16:16:19 +00:00
Marshall Clow ef44edfde4 N3545: Quoted strings
llvm-svn: 190032
2013-09-05 04:48:45 +00:00
Marshall Clow edc4ee3d15 Mark issues 2103, 2005, 2196 and 2203 as complete. No code changes.
llvm-svn: 190012
2013-09-04 23:48:25 +00:00
Howard Hinnant 6272680119 Evgeniy Stepanov: Add noexcept to ~bad_optional_access() to silence warning during build.
llvm-svn: 189949
2013-09-04 15:21:08 +00:00
Marshall Clow 8bd0ac1135 Updated status for LSG issues 2122, 2169, 2177, 2140 and 2086.
llvm-svn: 189900
2013-09-04 01:06:59 +00:00
Marshall Clow 3e2319e47a Update status of issues 2045, 2050, 2080, 2081, 2083, 2130, 2137 and 2177.
llvm-svn: 189894
2013-09-04 00:18:19 +00:00
Marshall Clow 5155a569d1 LWG Issue 2148: Hashing Enums
llvm-svn: 189831
2013-09-03 17:55:32 +00:00
Marshall Clow 710a902cac Updated the synopsis for weak_ptr<T>::owner_before to match the code. No code changes.
llvm-svn: 189812
2013-09-03 14:37:50 +00:00
Marshall Clow 3e6a3d0c29 Fix a typo in the status for <optional>
llvm-svn: 189809
2013-09-03 14:16:49 +00:00
Marshall Clow cb2e838ed0 Eradicate tabs
llvm-svn: 189808
2013-09-03 14:14:27 +00:00
Howard Hinnant e7d746d8b9 Implement N3672, optional<T>.
llvm-svn: 189772
2013-09-02 20:30:37 +00:00
Michael Gottesman b422ecc7de [cmake] Provide an option to not install the support headers so that the cmake build can match the make build if requested.
llvm-svn: 189739
2013-09-02 07:28:05 +00:00
Michael Gottesman 05c4b550c9 [cmake] Make libcxx standalone compile on Mac OS X.
llvm-svn: 189738
2013-09-02 07:28:03 +00:00
Howard Hinnant dda6f242fb Forgot to svn add the test for r189722.
llvm-svn: 189723
2013-08-31 17:03:02 +00:00
Howard Hinnant 69bc206547 SFINAE out duration converting constructor if the constructor would otherwise cause a ratio compile-time overflow. This fixes LWG 2094.
llvm-svn: 189722
2013-08-31 16:51:56 +00:00
Daniel Dunbar b6b3e50bf3 [tests] Change with_system_lib feature to match what XFAIL lines expect.
- The lit builtin XFAIL handling is more restrictive than what we were
   previously using, and for now I'd rather keep the lit one restrictive.

llvm-svn: 189692
2013-08-30 19:52:12 +00:00
Howard Hinnant 525dc284b4 is_destructible for function types was mistakenly returning true instead of false. This is true in both C++11 and C++1y, but has been clarified by the post C++11 LWG issue 2049.
llvm-svn: 189687
2013-08-30 19:12:42 +00:00
Howard Hinnant d0a4d73623 Xing Xue: Fix type-o. Thanks to C. Bergström for spotting it.
llvm-svn: 189674
2013-08-30 14:42:39 +00:00
Marshall Clow 1e548c72e7 LWG Issue 2128: Implement global cbegin/rbegin/cend/rbegin
llvm-svn: 189634
2013-08-30 01:17:07 +00:00
Howard Hinnant b81766ca23 Glen: Remove unneeded _LIBCPP_ALWAYS_INLINE.
llvm-svn: 189626
2013-08-29 23:50:48 +00:00
Howard Hinnant 9762413621 Xing Xue: Some minor changes for IBM XLC++/AIX.
llvm-svn: 189623
2013-08-29 23:37:50 +00:00
Howard Hinnant 393068bb04 Turn off extern templates for most uses. It is causing more problems than it is worth. The extern templates will still be built into the dylib, mainly for ABI stability purposes. And the client can still turn these back on with a #define if desire. This fixes http://llvm.org/bugs/show_bug.cgi?id=17027. However there's no associated test for the test suite because http://llvm.org/bugs/show_bug.cgi?id=17027 needs mismatched dylib and headers to fire.
llvm-svn: 189610
2013-08-29 20:56:53 +00:00
Marshall Clow eabb87c438 Typo: I wrote "2058" into the status column for issue 2058 instead of "Complete"
llvm-svn: 189602
2013-08-29 19:03:01 +00:00
Marshall Clow 08bdca2fc2 Mark LWG issues 2109, 222, 2058, 2091 and 2092 as complete. No changes to libc++ code.
llvm-svn: 189601
2013-08-29 18:55:55 +00:00
Marshall Clow 24cca08054 Mark issues 2147, 2149, 2163, 2172, 2098 and 2177 as complete. No code changes to libc++
llvm-svn: 189586
2013-08-29 15:35:54 +00:00
Marshall Clow 90a4dad9da Marked #2163 as complete in previous commit instead of #2162. Corrected.
llvm-svn: 189401
2013-08-27 20:25:06 +00:00
Marshall Clow 06fbed03fc LWG Issue 2162: mark allocator_traits::maxsize as noexcept
llvm-svn: 189399
2013-08-27 20:22:15 +00:00
Marshall Clow 7988106b21 LWG issues 2174/5/6 - mark wstring_convert::converted as noexcept, and make (some of) the constructors for wstring_convert and wbuffer_convert as explicit. Add configuration macro _LIBCPP_EXPLICIT_AFTER_CXX11
llvm-svn: 189398
2013-08-27 20:18:59 +00:00
Marshall Clow bf9ad4a1f8 Mark LWG issues 2190, 2200, and 2211 as done. No changes needed to libc++.
llvm-svn: 189359
2013-08-27 15:47:05 +00:00
Marshall Clow 5320c2b563 Update synopsis in <locale> to match LWG Issue 2229. No code change
llvm-svn: 189352
2013-08-27 14:22:13 +00:00
Marshall Clow 54c83368a5 Implement LWG issue 2061
llvm-svn: 189345
2013-08-27 13:03:03 +00:00
Howard Hinnant 0ed0d69c9c G M: Improvements to Windows support.
llvm-svn: 189273
2013-08-26 20:18:01 +00:00
Howard Hinnant 93288117a5 Apply constexpr to initializer_list for c++1y.
llvm-svn: 189271
2013-08-26 20:11:32 +00:00
Marshall Clow 541be9c72c Mark LWG issues 2011, 2015, 2033, 2065, 2071, 2102, 2235 as complete b/c libc++ already fixed them.
llvm-svn: 189232
2013-08-26 17:31:31 +00:00
Howard Hinnant c9d3ae43d2 G M: Improve support for compilers not supporting defaulted functions.
llvm-svn: 189184
2013-08-24 21:31:37 +00:00
Howard Hinnant 145afa17ca Rename _LIBCPP_DEBUG2 to _LIBCPP_DEBUG.
llvm-svn: 189140
2013-08-23 20:10:18 +00:00
Howard Hinnant 2f57df2aa9 Remove _LIBCPP_DEBUG. This was my first attempt at debug mode for libc++, and is now obsoleted by _LIBCPP_DEBUG2 (which isn't finished).
llvm-svn: 189135
2013-08-23 19:03:36 +00:00
Howard Hinnant fc88dbd298 Debug mode for string. This commit also marks the first time libc++ debug-mode has found a bug (found one in regex). Had to play with extern templates a bit to get this to work since string is heavily used within libc++.dylib.
llvm-svn: 189114
2013-08-23 17:37:05 +00:00
Howard Hinnant 104024cb59 Glen: replace obsolete _LIBCPP_CANTTHROW with _NOEXCEPT.
llvm-svn: 189046
2013-08-22 19:39:03 +00:00
Marshall Clow 7b5566c5f5 Mark LWG issues #2083, 2099 and 2105 as complete. No functionality change.
llvm-svn: 189044
2013-08-22 18:53:17 +00:00
Howard Hinnant 427ae44637 XFAIL a few tests on darwin12
llvm-svn: 189043
2013-08-22 18:47:39 +00:00
Howard Hinnant 179b1f8cf2 Zhihao Yuan noted that there were a few unneeded statements. Eliminated the unnecessary ones, and commented the ones that are there for non-obvious reasons such as to help things limp along in C++03 language mode.
llvm-svn: 189039
2013-08-22 18:29:50 +00:00
Howard Hinnant 9ff3203fcc Zhihao Yuan noted that a move assignment operation was missing from std::adjacent_difference. Fixed.
llvm-svn: 189036
2013-08-22 18:02:34 +00:00
Howard Hinnant d8bf850359 David Blaikie suggested this test for detecting constexpr on the error_category default constructor. Additionally I decided to make this constructor trivial as well, as I could not come up with a rationale for not doing so. Fully tested with both current Apple clang and tip-of-trunk clang.
llvm-svn: 189034
2013-08-22 17:41:48 +00:00
Howard Hinnant 56c917c57f XFAIL 3 tests on darwin 11-12. The tests have recently been modified, are correct, and pass with an updated libc++.dylib
llvm-svn: 188964
2013-08-22 00:04:22 +00:00
Daniel Dunbar 019c5905df [tests] Update to use lit's now-integrated XFAIL handling.
llvm-svn: 188960
2013-08-21 23:06:32 +00:00
Marshall Clow a86d516213 LWG 2145 - mark constructor for std::error_category as inline and constexpr. Leave the (existing, out-of-line, non-constexpr) in the dylib for compatibility with existing programs)
llvm-svn: 188858
2013-08-21 02:57:19 +00:00
Marshall Clow 890d1ee469 Updated status of issues #2093, 2144, and 2185
llvm-svn: 188813
2013-08-20 16:59:06 +00:00
Marshall Clow 8a79e1d053 Updated status and description of issues 2064, 2069 and 2096.
llvm-svn: 188811
2013-08-20 16:24:55 +00:00
Marshall Clow a0393ce271 Updated status of issues #2028, 2047, and 2053.
llvm-svn: 188810
2013-08-20 16:18:29 +00:00
Marshall Clow e06e3ac7d5 Updated status of issues #1214, 2207 and 2209. They were already implemented, so no functionality change was needed.
llvm-svn: 188803
2013-08-20 14:21:16 +00:00
Howard Hinnant 9309322454 G M: minor fix to silence warning in cmake version 2.8.11.20130809-gba97e.
llvm-svn: 188712
2013-08-19 21:42:07 +00:00
Howard Hinnant 113f13d2a5 Relax complete-type check for functions and function pointers to allow void return type. This bug was exposed by Eli Friedman's commit to clang r188324. Anywhere this version of clang ships, this libc++ fix must follow. However this fix is compatible with previous clangs, and so this libc++ doesn't need to wait for this clang.
llvm-svn: 188413
2013-08-14 21:28:31 +00:00
Howard Hinnant 5d1a701d6d Xing Xue: port to IBM XLC++/AIX.
llvm-svn: 188396
2013-08-14 18:00:20 +00:00
Marshall Clow a8c7c154bb Fix signed/unsigned warnings when building libc++ in C++14 mode
llvm-svn: 188395
2013-08-14 17:53:31 +00:00
Howard Hinnant 009aff5e96 Added some missing issues to the c++1y status page, and put in hyperlinks for the papers.
llvm-svn: 188387
2013-08-14 17:26:18 +00:00
Marshall Clow a6821921a7 remove CWG papers from list; add link to clang status page
llvm-svn: 188383
2013-08-14 16:30:37 +00:00
Marshall Clow 03bcdf27c6 Added CWG and SG1 papers to libc++ status page
llvm-svn: 188381
2013-08-14 16:12:34 +00:00
Marshall Clow 444d3300f2 Mark LWG Issue #2110 and #2113 as completed - they were already done
llvm-svn: 188378
2013-08-14 15:28:40 +00:00
Marshall Clow ede1aa2d31 Add a deleted assignment operator for basic_ostream; LWG Issue #2067
llvm-svn: 188375
2013-08-14 15:15:28 +00:00
Marshall Clow 2d6e2834a8 Implement LWG Issue #2187 (emplace_back and emplace for vector<bool>)
llvm-svn: 188333
2013-08-13 23:54:12 +00:00
Marshall Clow e4fa0dee48 Eradicate tabs
llvm-svn: 188322
2013-08-13 22:22:40 +00:00
Marshall Clow e06dfe2ccd Update for N3657 and issue 2010
llvm-svn: 188321
2013-08-13 22:20:01 +00:00
Marshall Clow 2585835c3b Second half (map/multimap) of N3657
llvm-svn: 188320
2013-08-13 22:18:47 +00:00
Marshall Clow 72f7821cc6 Updated issues 2039, 2044, 2197, 2225, and 2231
llvm-svn: 188294
2013-08-13 17:02:42 +00:00
Marshall Clow bd9d059e6c Updated Issue 2187
llvm-svn: 188286
2013-08-13 16:23:22 +00:00
Marshall Clow e714b879df Removed 'Ready' issues from Bristol
llvm-svn: 188284
2013-08-13 16:07:51 +00:00
Marshall Clow fb9945594f Updated issues 2009 and 2074
llvm-svn: 188283
2013-08-13 16:01:28 +00:00
Marshall Clow 914993df0b Added more tests for numeric conversion error handing; Refs LWG issue 2009
llvm-svn: 188282
2013-08-13 15:52:51 +00:00
Marshall Clow 47e432c6df Fix template formatting. No, really
llvm-svn: 188277
2013-08-13 15:13:42 +00:00
Marshall Clow 6efb2bf585 escape some template specs
llvm-svn: 188276
2013-08-13 15:07:02 +00:00
Marshall Clow 873e890f44 Fix case mismatch
llvm-svn: 188275
2013-08-13 14:59:44 +00:00
Marshall Clow f77718ad1d Create a C++14 status page
llvm-svn: 188273
2013-08-13 14:58:39 +00:00
Marshall Clow 75f9aa9993 More support for N3657; tests for is_transparent
llvm-svn: 188242
2013-08-13 01:12:41 +00:00
Marshall Clow 25d3402c6a First half of support for N3657; heterogenous lookups for set/multiset
llvm-svn: 188241
2013-08-13 01:11:06 +00:00
Howard Hinnant f0544c2086 Nico Rieck: this patch series fixes visibility issues on Windows as explained in <http://lists.cs.uiuc.edu/pipermail/cfe-dev/2013-August/031214.html>.
llvm-svn: 188192
2013-08-12 18:38:34 +00:00
Howard Hinnant 6afbc442d6 Add a check for arrays of unknown bounds to is_destructible. This fixes http://llvm.org/bugs/show_bug.cgi?id=16839
llvm-svn: 188080
2013-08-09 16:53:45 +00:00
Howard Hinnant d7cda0680a Partial implementation of N3665. This paper was not voted into the C++1y draft. However I was looking at it and with some experimentation realized that I could partially implement it, and at the same time offer a performance optimization to cout. I simply added an xsputn override to the cout filebuf. The override does nothing special at all if there is a non-trivial codecvt installed. However if the codecvt returns true for always_noconv(), then this function can dump an entire string to fwrite, instead of doing it a character at a time under overflow(). This just makes sense. I stopped short of a full implementation of N3665 because in order to do so, xsputn would have to allocate a buffer when always_noconv() returned false, and I don't want to go to that expense.
llvm-svn: 188077
2013-08-09 16:25:43 +00:00
Daniel Dunbar 4a38129468 [tests] Update to use lit_config and lit package, as appropriate.
llvm-svn: 188073
2013-08-09 14:44:11 +00:00
Marshall Clow 2472b928d2 N3644 tests for map/multimap/set/multiset. Drive-by NOEXCEPT for __tree_const_iterator constructor. Fix comment typos in other tests
llvm-svn: 188019
2013-08-08 21:52:50 +00:00
Howard Hinnant 8c9742051d My previous reorganization of addressof broke -std=c++03. Thanks much to Arnold Schwaighofer for catching this. This patch also catches a few more missing addressof in <future>, thanks go to Zhihao Yuan for catching these.
llvm-svn: 187997
2013-08-08 18:38:55 +00:00
Arnold Schwaighofer 5331e3a481 Revert r187927.
Zhihao Yuan: Replace operator& with addressof in reference_wrapper constructor.

It breaks a clang bootstrap.

llvm-svn: 187959
2013-08-08 03:06:24 +00:00
Howard Hinnant 57f783da4e Update CREDITS.TXT
llvm-svn: 187936
2013-08-07 23:29:10 +00:00
Howard Hinnant 9027f5e3de Zhihao Yuan: Replace operator& with addressof in reference_wrapper constructor.
llvm-svn: 187927
2013-08-07 23:02:42 +00:00
Marshall Clow 2c1a894061 N3644 support for <unordered_set> and <unordered_map>
llvm-svn: 187915
2013-08-07 21:30:44 +00:00
Marshall Clow 36b2a3b0e5 N3644 support for vector<bool>
llvm-svn: 187911
2013-08-07 20:53:44 +00:00
Marshall Clow 798061ded6 N3644 support for vector<bool>
llvm-svn: 187910
2013-08-07 20:53:38 +00:00
Marshall Clow 07186a7d2d N3644 support for <string> and <vector>
llvm-svn: 187909
2013-08-07 20:48:48 +00:00
Howard Hinnant 303e27d8ce Correct logic bug in find optimization for vector<bool>. This fixes http://llvm.org/bugs/show_bug.cgi?id=16816
llvm-svn: 187908
2013-08-07 20:42:16 +00:00
Howard Hinnant d098713aaf War on tabs
llvm-svn: 187906
2013-08-07 19:39:48 +00:00
Howard Hinnant c5582b57c6 Rename time.duration.literals step 3
llvm-svn: 187905
2013-08-07 19:39:11 +00:00
Howard Hinnant 35e09c7ad7 Rename time.duration.literals step 2
llvm-svn: 187904
2013-08-07 19:36:50 +00:00
Howard Hinnant 453ca75d24 Rename time.duration.literals step 1
llvm-svn: 187903
2013-08-07 19:35:46 +00:00
Marshall Clow e141dc0490 Implement tests for NULL iterators for <array> re: N3644
llvm-svn: 187809
2013-08-06 17:17:13 +00:00
Marshall Clow 8fe0a3722c Implement NULL iterators for <forward_list> and <deque> re: N3644
llvm-svn: 187805
2013-08-06 16:14:36 +00:00
Marshall Clow 0c37cfd8b8 Implement NULL iterators for <list> re: N3644
llvm-svn: 187740
2013-08-05 21:23:28 +00:00
Howard Hinnant 2f51de568f debug mode for unordered_map. Also picked up a missing check and test in unordered_multimap. This wraps up debug mode for the unordered containers.
llvm-svn: 187659
2013-08-02 17:50:49 +00:00
Howard Hinnant 42a3046eef Ok, 3 major changes for debug mode in one commit:
1.  I had been detecting and trapping iterator == and \!= among iterators
    in different containers as an error.  But the trapping itself is actually
    an error.
    
    Consider:
    
    #include <iostream>
    #include <vector>
    #include <algorithm>

    template <class C>
    void
    display(const C& c)
    {
        std::cout << "{";
        bool first = true;
        for (const auto& x : c)
        {
            if (\!first)
                std::cout << ", ";
            first = false;
            std::cout << x;
        }
        std::cout << "}\n";
    }

    int
    main()
    {
        typedef std::vector<int> V;
        V v1 = {1, 3, 5};
        V v2 = {2, 4, 6};
        display(v1);
        display(v2);
        V::iterator i = std::find(v1.begin(), v1.end(), 1);
        V::iterator j = std::find(v2.begin(), v2.end(), 2);
        if (*i == *j)
            i = j;    // perfectly legal
        // ...
        if (i \!= j)   // the only way to check
            v2.push_back(*i);
        display(v1);
        display(v2);
    }

    It is legal to assign an iterator from one container to another of the
    same type.  This is required to work.  One might want to test whether or
    not such an assignment had been made.  The way one performs such a check
    is using the iterator's ==, \!= operator.  This is a logical and necessary
    function and does not constitute an error.

2.  I had a header circular dependence bug when _LIBCPP_DEBUG2 is defined.
    This caused a problem in several of the libc++ tests.
    Fixed.

3.  There is a serious problem when _LIBCPP_DEBUG2=1 at the moment in that
    std::basic_string is inoperable.  std::basic_string uses __wrap_iterator
    to implement its iterators.  __wrap_iterator has been rigged up in debug
    mode to support vector.  But string hasn't been rigged up yet.  This means
    that one gets false positives when using std::string in debug mode.  I've
    upped std::string's priority in www/debug_mode.html.

llvm-svn: 187636
2013-08-02 00:26:35 +00:00
Howard Hinnant 0be8f64c44 Nico Rieck: Currently _MSC_VER and _WIN32 are used to guard code which is
MSVC-specific, MSVCRT-specific, or Windows-specific. Because Clang can
also define _MSC_VER, and MSVCRT is not necessarily the only C runtime,
these macros should not be used interchangeably.

This patch divides all Windows-related bits into the aforementioned
categories. Two new macros are introduced:

- _LIBCPP_MSVC: Defined when compiling with MSVC. Detected using
  _MSC_VER, excluding Clang.
- _LIBCPP_MSVCRT: Defined when using the Microsoft CRT. This is the default
   when _WIN32 is defined.

This leaves _WIN32 for code using the Windows API.

This also corrects the spelling of _LIBCP_HAS_IS_BASE_OF to _LIBCPP_HAS_IS_BASE_OF.

Nico, please prepare a patch for CREDITS.TXT, thanks.

llvm-svn: 187593
2013-08-01 18:17:34 +00:00
Howard Hinnant 0f242bea10 Taking another swing at correctly optimizing fill_n.
llvm-svn: 187587
2013-08-01 17:29:28 +00:00
Howard Hinnant ce075cf1aa Constrain fill_n -> memset operations to include implicit convertibility to unsigned char. This fixes http://llvm.org/bugs/show_bug.cgi?id=16764. Also a drive-by fix on a chrono test suite bug.
llvm-svn: 187552
2013-08-01 00:41:55 +00:00
Marshall Clow a1cd191624 Implement constexpr (n3302) and fix operator *= and /=
llvm-svn: 187529
2013-07-31 21:02:34 +00:00
Marshall Clow df67172d59 Backwards!
llvm-svn: 187518
2013-07-31 19:39:37 +00:00
Marshall Clow a1d0d376c8 Implement n3469 - constexpr for chrono
llvm-svn: 187517
2013-07-31 19:32:19 +00:00
Howard Hinnant 4c80bfbd53 Debug mode for unordered_multimap. Some mods were done for unordered_map as well to keep all the tests passing. However unordered_map is at the very least still missing tests, if not functionality (if it isn't tested, it probably isn't working).
llvm-svn: 187446
2013-07-30 21:04:42 +00:00
Howard Hinnant e5c13decbe Debug mode for unordered_multiset. The exercise spotted a few places I had missed on unordered_set, so I picked those up as well.
There are actually two debug modes:

   1.  -D_LIBCPP_DEBUG2 or -D_LIBCPP_DEBUG2=1
       This is a relatively expensive debug mode, but very thorough.  This is normally what you want to debug with, but may turn O(1) operations into O(N) operations.

   2.  -D_LIBCPP_DEBUG2=0
       This is "debug lite."  Only preconditions that can be checked with O(1) expense are checked.  For example range checking on an indexing operation.  But not iterator validity.

llvm-svn: 187369
2013-07-29 19:05:47 +00:00
Howard Hinnant aa5aa98eab Add operator new[] to test. Partial fix for valgrind warning in http://llvm.org/bugs/show_bug.cgi?id=16703.
llvm-svn: 187358
2013-07-29 14:43:42 +00:00
Marshall Clow 83c08b4497 Implement N3421; comparison predicates<void>
llvm-svn: 187357
2013-07-29 14:21:53 +00:00
Howard Hinnant 55d5e76fdb Glen: Minor tweaks to locale.cpp to help it compile with exceptions turned off.
llvm-svn: 187332
2013-07-28 18:20:00 +00:00
Marshall Clow 7aa54577d1 literal suffixes for std::chrono
llvm-svn: 187078
2013-07-24 21:18:14 +00:00
Howard Hinnant b24c802489 Debug mode for unordered_set. I believe this to be fairly complete for
unordered_set, however it is not complete yet for unordered_multiset,
unordered_map or unordered_multimap.  There has been a lot of work done
for these other three containers, however that work was done just to
keep all of the tests passing.

You can try this out with -D_LIBCPP_DEBUG2.  You will have to link to a
libc++.dylib that has been compiled with src/debug.cpp.  So far, vector
(but not vector<bool>), list, and unordered_set are treated.  I hope to
get the other three unordered containers up fairly quickly now that
unordered_set is done.

The flag _LIBCPP_DEBUG2 will eventually be changed to _LIBCPP_DEBUG, but
not today.  This is my second effort at getting debug mode going for
libc++, and I'm not quite yet ready to throw all of the work under the
first attempt away.

The basic design is that all of the debug information is kept in a
central database, instead of in the containers.  This has been done as
an attempt to have debug mode and non-debug mode be ABI compatible with
each other.  There are some circumstances where if you construct a
container in an environment without debug mode and pass it into debug
mode, the checking will get confused and let you know with a readable
error message.  Passing containers the other way: from debug mode out to
a non-debugging mode container should be 100% safe (at least that is the
goal).

llvm-svn: 186991
2013-07-23 22:01:58 +00:00
Marshall Clow ca0be23b39 Implement string suffixes from N3642
llvm-svn: 186956
2013-07-23 17:05:24 +00:00
Howard Hinnant 7491a16031 Bill Fisher: This patch fixes a bug where std::regex in ECMAScript mode was ignoring capture groups inside lookahead assertions.
For example, matching /(?=(a))(a)/ to "a" should yield two captures: \1 = "a", \2 = "a"

llvm-svn: 186954
2013-07-23 16:18:04 +00:00
Howard Hinnant 1468d0cec7 Add some friendly messages to libcxx calls to abort().
llvm-svn: 186951
2013-07-23 16:05:56 +00:00
Richard Smith 79c06417d1 Add some missing cv-qualifiers.
llvm-svn: 186909
2013-07-23 01:24:30 +00:00
Anders Carlsson 8bb1dbbf75 Fix a bug in std::fill_n where memset would end up being called in cases when it shouldn’t.
Reviewed by Howard.

llvm-svn: 186875
2013-07-22 21:08:00 +00:00
Marshall Clow 75eff74803 Make tuple's constructor and std::get<>(tuple) constexpr. Final stage of fixing bug #16599. Thanks to Howard for the review and updates.
llvm-svn: 186834
2013-07-22 16:02:19 +00:00
Marshall Clow 8bf1f08a2c Make std::get constexpr
llvm-svn: 186525
2013-07-17 18:25:36 +00:00
Howard Hinnant fee09c68a0 Add pointer format test for Windows.
llvm-svn: 186472
2013-07-16 23:50:06 +00:00
Marshall Clow 18191ceb54 Bug 16599 part 2: Make std::pair's constructors and comparison operators (and make_pair) constexpr.
llvm-svn: 186430
2013-07-16 17:45:44 +00:00
Marshall Clow 1c682f0f0c Make std::forward and std::move (and std::move_if_noexcept) constexpr in C++14
llvm-svn: 186344
2013-07-15 20:46:11 +00:00
Howard Hinnant 22161401df Bill Fisher: This patch fixes an ill-formed comparison when parsing control escapes, e.g. "\cA\ca". The code will now throw an error_escape exception for invalid control sequences like "\c:" or "\c".
I've added the test cases to bad_escape.pass.cpp.

llvm-svn: 186335
2013-07-15 18:21:11 +00:00
Howard Hinnant 10f8387b94 A few fixes to tests for Windows port.
llvm-svn: 186334
2013-07-15 18:09:11 +00:00
Marshall Clow f20d2672e2 Add macro _LIBCPP_CONSTEXPR_AFTER_CXX11 for functions that have been marked constexpr post C++11
llvm-svn: 186323
2013-07-15 14:57:19 +00:00
Marshall Clow e99520c72e Implement n3584 - Addressing Tuples by Type
llvm-svn: 186237
2013-07-13 02:54:05 +00:00
Howard Hinnant 6d8a38c537 Port make_[un]signed tests to platforms where sizeof(wchar_t) == 2.
llvm-svn: 186136
2013-07-11 23:51:05 +00:00
Howard Hinnant c815a4e297 Bill Fisher: This patch fixes a less likely case where '\b' can back up into invalid memory, when driven by a regex_iterator (for case 1, see r185273 or http://llvm.org/bugs/show_bug.cgi?id=16240)
The attached test program also supplies a test for the case 1 fix in r185273.

llvm-svn: 186089
2013-07-11 15:32:55 +00:00
Marshall Clow 48c9fe29b2 Improved tests (and fixed a bug in the tests); thanks to Richard Smith for the suggestion
llvm-svn: 186022
2013-07-10 18:01:34 +00:00
Marshall Clow 8e1cb5adb3 move __save_flags from <random> to <ios> in preparation for reuse; no functionality change
llvm-svn: 185968
2013-07-09 20:34:14 +00:00
Howard Hinnant dbdeb153d8 Bill Fisher: This patch fixes a bug where regex_iterator doesn't indicate when it's restarting in the middle of a string. This bug causes /^a/ to match in the middle of the string "aaaaaaa", during iteration.
My patch uses  to communicate when  is false.

llvm-svn: 185950
2013-07-09 17:29:09 +00:00
Howard Hinnant e0fe3d2e96 War on tabs.
llvm-svn: 185865
2013-07-08 21:06:38 +00:00
Marshall Clow a7b0e5ddf8 Implement n3668 - std::exchange
llvm-svn: 185863
2013-07-08 20:54:40 +00:00
Marshall Clow f331327c6a Implement n3545 for c++14
llvm-svn: 185856
2013-07-08 20:05:31 +00:00
Howard Hinnant 271426e6ab Windows port for __codecvt_utf8<wchar_t>.
llvm-svn: 185849
2013-07-08 19:03:07 +00:00
Howard Hinnant 5e00063b86 Silence -Wint-to-void-pointer-cast warning in test.
llvm-svn: 185756
2013-07-06 14:41:36 +00:00
Howard Hinnant abb160e689 Remove implicit conversion from __value_type to value_type in [unordered_][multi]map. This fixes http://llvm.org/bugs/show_bug.cgi?id=16549
llvm-svn: 185711
2013-07-05 18:06:00 +00:00
Howard Hinnant 4a95f9eb7e Removed extension in [unordered_][multi]map which allowed one to emplace using just an argument for the key, as opposed to using piecewise_construct. However a bug report exposed that this created an unfortunate ambiguity. People who are currently using the extension will be notified the next time they compile, and will have to change to using piecewise_construct. There are no ABI issues with the removal of this extension. This fixes http://llvm.org/bugs/show_bug.cgi?id=16542
llvm-svn: 185666
2013-07-04 20:59:16 +00:00
Howard Hinnant bbdf669bde Simplify comparators of [unordered_][multi]map. This fixes http://llvm.org/bugs/show_bug.cgi?id=16538
llvm-svn: 185665
2013-07-04 19:46:35 +00:00
Joerg Sonnenberger 0644627bef Fix bashism.
llvm-svn: 185646
2013-07-04 15:11:10 +00:00
Marshall Clow 5b2ef2b1a6 Patch for N3655 (Transformation type traits) with Howard's additions
llvm-svn: 185597
2013-07-04 00:10:01 +00:00