[PATCH] D32778: [libcxx] [test] Conditionally workaround C1XX/EDG bugs
Casey Carter via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue May 2 17:52:05 PDT 2017
CaseyCarter created this revision.
Test support machinery changes needed to parse with EDG and compile with C1XX's /Za flag that disables MS extensions.
I try to make changes to `<optional>` and the `optional`/`variant` tests simultaneously in the MS STL and in libc++, which realistically requires that I keep the tests largely synchronized between libc++ and our internal test suite. As a first step toward automating that integration, I'd like to upstream this patch.
This change works around a couple of bugs:
1. EDG doesn't like explicit constexpr in a derived class. This program:
struct Base {};
struct Derived : Base {
constexpr Derived() = default;
};
triggers "error: defaulted default constructor cannot be constexpr."
2. C1XX with /Za has no idea which constructor needs to be valid for copy elision.
The change also conditionally disables parts of the msvc_stdlib_force_include.hpp header that conflict with external configuration when `_LIBCXX_IN_DEVCRT` is defined.
https://reviews.llvm.org/D32778
Files:
test/support/archetypes.hpp
test/support/archetypes.ipp
test/support/msvc_stdlib_force_include.hpp
test/support/test.workarounds/c1xx_broken_za_ctor_check.pass.cpp
test/support/test_macros.h
test/support/test_workarounds.h
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32778.97530.patch
Type: text/x-patch
Size: 6840 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170503/d3fe0a09/attachment.bin>
More information about the cfe-commits
mailing list