[libcxx-dev] Non-merged type info name comparison
Louis Dionne via libcxx-dev
libcxx-dev at lists.llvm.org
Thu May 14 05:58:58 PDT 2020
Revisiting this, I think it would make sense to do that. The three modes would become:
1) Unique: Assume RTTI is de-duplicated, and only ever compare pointers -- AS-IS TODAY
2) NonUnique: Assume RTTI is not de-deduplicated: compare pointers first, fall back to string comparison but not when it starts with * -- THIS IS DIFFERENT FROM TODAY
3) NonUniqueARMRTTIBit: Weird implementation for ARM64 -- DOESN'T CHANGE
Eric, what do you think? It would be straightforward to implement, and it would unbreak the NonUnique variant in the cases where we have identically named types in anonymous namespaces -- an arguable bug in the NonUnique implementation today.
> On Sep 23, 2019, at 15:02, Shoaib Meenai via libcxx-dev <libcxx-dev at lists.llvm.org> wrote:
> In https://reviews.llvm.org/rL361913 <https://reviews.llvm.org/rL361913>, libc++ gained the option to make type info comparisons use a strcmp on the type info name, which is useful for when we can’t guarantee RTTI uniqueness. I believe libstdc++ also defaults to strcmp comparisons. However, libstdc++ doesn’t perform the string comparison when the type info name begins with the * character , which is the case for e.g. types defined in anonymous namespaces. Should libc++’s implementation be changed to match, at least when targeting Linux?
>  https://github.com/gcc-mirror/gcc/blob/277b02e227df91c686e7f7ad1ae21cd898611ca8/libstdc%2B%2B-v3/libsupc%2B%2B/typeinfo#L123 <https://github.com/gcc-mirror/gcc/blob/277b02e227df91c686e7f7ad1ae21cd898611ca8/libstdc%2B%2B-v3/libsupc%2B%2B/typeinfo#L123>
> libcxx-dev mailing list
> libcxx-dev at lists.llvm.org <mailto:libcxx-dev at lists.llvm.org>
> https://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev <https://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-dev>
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the libcxx-dev