diff options
author | Arthur O'Dwyer <arthur.j.odwyer@gmail.com> | 2021-12-03 14:55:57 -0500 |
---|---|---|
committer | Arthur O'Dwyer <arthur.j.odwyer@gmail.com> | 2021-12-15 20:19:56 -0500 |
commit | 5c0ea7488bc051453ad07135f32145465f502a84 (patch) | |
tree | f6bc7818fe2df3a373c35baa5d138f44d442c68d /llvm/lib/Object/MachOObjectFile.cpp | |
parent | 50187d2dd538711c9afc0b8dd57d9cd5b8ff2d93 (diff) | |
download | llvm-5c0ea7488bc051453ad07135f32145465f502a84.zip llvm-5c0ea7488bc051453ad07135f32145465f502a84.tar.gz llvm-5c0ea7488bc051453ad07135f32145465f502a84.tar.bz2 |
[libc++] Enable the optimized _IsSame on GCC as well as Clang.
However, there's a problem on both GCC and Clang: they can't mangle
`__is_same(T,U)` if it appears anywhere that affects mangling. That's
a hard error. And it turns out that GCC puts dependent return types
into the mangling more aggressively than Clang, so for GCC's benefit
we need to avoid using raw `_IsSame` in the return type of
`swap(tuple&, tuple&)`. Therefore, make `__all` into a named type
instead of an alias.
If we ever need to support a compiler without the __is_same builtin,
we can make this an alias template for `is_same<T,U>::type`.
Differential Revision: https://reviews.llvm.org/D115100
Diffstat (limited to 'llvm/lib/Object/MachOObjectFile.cpp')
0 files changed, 0 insertions, 0 deletions