Open royjacobson opened 2 years ago
@llvm/issue-subscribers-clang-frontend
I think this shouldn't be marked libc++, since this is a clang builtin problem, not anything that libc++ could fix. Do you agree?
You should know better than me :)
My thinking was since it's a built-in that's pretty specific to a stdllib class it's close enough for tagging libcxx as well.
This is an ItaniumMangle bug, works fine on MSVC.
This is related to how we store a dependent TemplateSpecializationType for builtin templates, and how ItaniumMangle goes the roundabout way of using the dependent types instead of fully instantiated, non-dependent types.
According to the standard,
std::make_index_sequence
should be an alias tostd::integer_sequence
. Inside clang we use a special builtin,__make_integer_seq
, to implementstd::make_index_sequence
more efficiently.Consider
The instantiation of
f
contains__make_integer_seq
in the mangled type of the return value under both libstdc++ and libc++:GCC mangles
f
as_Z1fILi1EESt16integer_sequenceImJXspcl14__integer_packT_EEEEv
. This is at least inconsistent w.r.t to GCC and perhaps violates the standard (sincestd::make_index_sequence
should just be an alias).