Nothing seems too mysterious here, but why limit to constexpr instead of anything where Clang can see a constant value, which would make it work in C as well? (If you're allowing constexpr, you're already allowing arbitrary work.)
Aug 5 2020
Dec 12 2019
Oct 29 2019
Oct 18 2019
Oct 17 2019
Oct 10 2019
Committed in rCTE374494.
Committed in rL374440. I split the difference and put the EBO comment in the commit message.
Any idea why MDString is friending an implementation detail like this? Should it be? Could we make it an actual private implementation detail so people can't do this?
Oct 8 2019
Committed in rL374102.
Oct 7 2019
Fixed bad uses of StringSet, changed a friend from StringMapEntry to StringMapEntryStorage. The fact that I only had to do this in one place (and that one place is definitely doing something tricky) makes me still feel confident enough to make this change.
Hm, doesn't quite work yet but I'll get there.
Committed in rL373935 (with the update for AMDGPURegisterBankInfo.cpp).
Oct 4 2019
Committed as rC373769.
Okay, having Xcode force-load the static libraries doesn't seem bad at all.
clang_cpp can't link the libraries "normally" because it has no unresolved symbols to force the contents of the libraries to link. I don't like it, but I think the best option is to disable clang_cpp under Xcode. You can add AND XCODE to the if on line 2 of clang/tools/clang-shlib/CMakeLists.txt, and that should do the trick.
Oct 3 2019
Okay, new patch set at D68439.
I'm not quite sure what it's doing. The executable targets end up trying to link against the static libraries anyway, which of course haven't been built. It's possible that this is because the LIBTYPE is both STATIC and OBJECT and if it were just OBJECT we might be better off, but I'm not sure if Xcode's IDE features will be happy with a target that doesn't actually produce a library. I can try it if you want, though.
Oct 2 2019
I don't. I know Swift's (hopefully superfluous) version of the same code works fine on the MSVC's we support, though: https://github.com/apple/swift/blob/da1002025323cc4199439b10d4c7bac11322d22c/include/swift/Basic/STLExtras.h#L267
I'd like to try adding this back. Do you remember what the failure was? Maybe we can try calling begin() and end() instead of using the fields directly?
Sep 25 2019
Definitely in favor. :-)
Sep 3 2019
Aug 16 2019
Committed as rL369129.
libcxx is using llvm-config to find the CMake exports; that's actually what prompted this change.