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;

Reply via email to