This is an archive of the discontinued LLVM Phabricator instance.

[libc++] TEST DO NOT REVIEW
AbandonedPublic

Authored by Mordante on Jul 29 2021, 6:12 AM.

Details

Reviewers
None
Group Reviewers
Restricted Project
Summary

Test whether all compilers support concepts.

Diff Detail

Event Timeline

Mordante created this revision.Jul 29 2021, 6:12 AM
Mordante requested review of this revision.Jul 29 2021, 6:12 AM
Herald added a project: Restricted Project. · View Herald TranscriptJul 29 2021, 6:12 AM
Herald added a reviewer: Restricted Project. · View Herald Transcript
Quuxplusone added inline comments.
libcxx/include/__config
851–856

I think a quicker and dirtier (but more accurate-to-real-life) method of testing this would have been to just unconditionally #undef _LIBCPP_HAS_NO_CONCEPTS and then see what breaks. :)

Mordante added inline comments.Jul 29 2021, 9:46 AM
libcxx/include/__config
851–856

That would also have worked, but I wanted to make sure this path was taken. I didn't want depend on test failures due to not having concepts implemented in the compiler.

AppleClang 12.0 doesn't support concepts. Technically we still support it until 13.0 is out of beta.

In practice, this is going to be a can of worms. Xcode 13 requires macOS 11.0, but we can't do back-deployment testing with macOS 11.0. So if we dropped support for AppleClang 12.0, we would not be able to do back-deployment testing on the hosts that run Xcode 13 anymore. We'll have to figure out a way to do back-deployment testing without being stuck on an older OS. I think that means we'll have to go down the route of remote execution, which is something that we need to do anyway if we ever want to test on funkier platforms like embedded or even just testing on the iOS simulator. It's kind of frustrating that a simple compiler upgrade has such a big chain of dependencies, but I won't let those difficulties dictate which compilers we support.

Mordante abandoned this revision.Jul 30 2021, 12:06 AM

I agree we should be able to update our compilers and be able to support older platforms at the same time.

This patch was mainly to test what the current status of our supported platforms is. I didn't want to change all format patches just to discover concepts aren't properly supported on all platforms yet. With that answer known the patch has served its purpose.