https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115897
Patrick Palka <ppalka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |14.2
Assignee|unassigned at gcc dot gnu.org |ppalka at gcc dot
gnu.org
Known to fail| |14.1.0, 15.0
Known to work| |13.3.0
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2024-07-12
Ever confirmed|0 |1
Summary|[14/15 Regression] |[14/15 Regression]
|vector_si |vector_size attribute on
| |alias template has no
| |effect when used in a
| |dependent variable
| |template-id
--- Comment #3 from Patrick Palka <ppalka at gcc dot gnu.org> ---
... which means the comment #2 testcase using a class instead of variable
template-id has been failing for much longer, and r14-2170 just caused this
preexisting issue to affect variable template-ids too.
The problem seems to be that we're stripping the alias template-id _Vp<_Tp> to
_Tp too soon, before we have an argument for _Tp, because we wrongly think the
two types are equivalent, but they're not due to the attribute.
complex_alias_template_id probably should return true for alias attributes that
have an attribute.
A workaround is to give _Vp a dummy defaulted template parameter, e.g.
template <typename _Tp, typename _Up = _Tp>
using _Vp [[gnu::vector_size(16)]] = int;