Go to file
Howard Hinnant ccad8c32e0 This fixes a very subtle ABI problem concerning the copy constructor of
pair, and a couple of pair-like implementation detail types.  The
C++98/03 and 11 standards all specify that the copy constructor of
pair<int, int> is trivial. However as libc++ tracked the draft C++11
standard over the years, this copy constructor became non-trivial, and
then just recently was corrected back to trivial for C++11.

Unfortunately (for libc++1) the Itanium ABI specifies different calling
conventions for trivial and non-trivial copy constructors.  Therefore
currently the C++03 libc++ copy constructor for pair<int, int> is ABI
incompatible with the C++11 libc++ copy constructor for pair<int, int>.
This is Bad(tm).   This patch corrects the situation by making this copy
constructor trivial in C++03 mode as well.

Just in case it is needed for an incomplete C++11 compiler, libc++
retains the ability to support pair with rvalue references, but without
defaulted special members.  However the pair needs non-trivial special
members to implement this special case, (as it did when clang was in
this place a couple of years ago).

During this work a bug was also found and fixed in
is_trivially_constructible.

And there is a minor drive-by fix in <__config> regarding
__type_visibility__.

A test is updated to ensure that the copy constructor of pair<int, int>
is trivial in both C++03 and C++11.  This test will necessarily fail for
a compiler that implements rvalue references but not defaulted special
members.

llvm-svn: 194536
2013-11-13 00:39:22 +00:00
clang unittests/Tooling/ToolingTest.cpp: Suppress new tests on win32, due to handling of virtual file, such "/a.cc". 2013-11-13 00:18:50 +00:00
clang-tools-extra Extended moduleImport test to test a module with more than one path component. This required a change to the includes test, because of the change to the headers. 2013-11-12 19:50:49 +00:00
compiler-rt Added summary info to GCDAProfiling. 2013-11-12 18:45:50 +00:00
debuginfo-tests don't use CHECK-NEXT because it may be on the same line. 2013-09-18 23:01:54 +00:00
libclc s/_CLC_DECL/_CLC_DEF/ 2013-10-31 15:50:53 +00:00
libcxx This fixes a very subtle ABI problem concerning the copy constructor of 2013-11-13 00:39:22 +00:00
libcxxabi If libc++ has not declared bad_array_length, then declare it here just so that it gets into the binary. 2013-11-07 17:16:37 +00:00
lld [MachO] Simplify conditionals. No functionality change. 2013-11-12 17:46:55 +00:00
lldb Change SBThread::GetExtendedBacktrace to 2013-11-12 23:33:32 +00:00
llvm Removing llvm::huge_vald and llvm::huge_vall because they are not currently used, and HUGE_VALD does not appear to be supported everywhere anyways. 2013-11-13 00:20:43 +00:00
openmp Update web pages to include style sheets and referenced documents missed before. 2013-10-03 11:55:28 +00:00
polly PassManagerBase has moved into the legacy namespace as of r194324; match it here. 2013-11-12 17:10:46 +00:00