hokein wrote: > But my question is: how does the missing call to `MarkAppeared()` leads to > the out-of-bounds access? Do we allocate a vector that has the size of > `max(Index)` and expect that we have previously marked all template > parameters mentioned in the type?
Yes, almost. The template parameter list of the synthesized deduction guide consists of two parts: 1) the template parameters of the alias template that appeared in the deductions; 2) the template parameters of the underlying template (RHS of the alias) that were not deduced; MarkAppeared() performs the step 1, the crash is that we don't track the template template type parameters, thus we miss this kind of template parameter in the list, and we have a reference to it in the synthesized deduction guide declaration which could lead to an out-of-bounds access (for this particular case, the template parameter list is empty). > I have tried to turn your example into valid code and it [also > crashed](https://gcc.godbolt.org/z/38c3dKG7b). Could we add it to the tests? Great, thanks! Added. https://github.com/llvm/llvm-project/pull/85405 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits