-
Notifications
You must be signed in to change notification settings - Fork 15k
Description
Bugzilla Link | 45549 |
Resolution | FIXED |
Resolved on | Jan 26, 2021 06:23 |
Version | 9.0 |
OS | All |
Reporter | LLVM Bugzilla Contributor |
CC | @k15tfu,@ldionne,@mclow |
Fixed by commit(s) | 2464d81 |
Extended Description
When using LIBCXX_HAS_MERGED_TYPEINFO_NAMES_DEFAULT=OFF, distinct classes with the same name, each in a different TU and anonymous namespace, are considered equal by std::type_index.
LIBCXX_HAS_MERGED_TYPEINFO_NAMES_DEFAULT=OFF is used in the libc++ shipped with Xcode as of Xcode 11.4. The bug does not occur in Xcode 11.3.1, the previous version. LIBCXX_HAS_MERGED_TYPEINFO_NAMES_DEFAULT was introduced in 2405bd6 for LLVM 9.0.0.
See https://gist.github.com/ryb-ableton/1805b61e2d0976de4ba04c2aa2f5992b for a minimal test case.
May be related to #34255
Steps to reproduce on Linux/x86:
- Build and install libc++ 9.0 or 10.0 by passing -DLIBCXX_HAS_MERGED_TYPEINFO_NAMES_DEFAULT=OFF to cmake
- Download and extract a zip of the Gist linked above
- Run "bash ./build_and_run"
Steps to reproduce on macOS:
- Install and select Xcode 11.4, which uses LIBCXX_HAS_MERGED_TYPEINFO_NAMES_DEFAULT=OFF by default
- Download and extract a zip of the Gist linked above
- Run "bash ./build_and_run"
Actual Output:
Assertion failed: (registry[0] != registry[1]), function main, file main.cpp, line 13.
./run: line 4: 39942 Abort trap: 6 ./test
Failure
Expected Output:
Success