diff options
author | Krystian Stasiowski <sdkrystian@gmail.com> | 2024-10-29 11:36:55 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-29 13:36:55 -0400 |
commit | 639a7ac648f1e50ccd2556e17d401c04f9cce625 (patch) | |
tree | c2f9f97fac48728ef5f7b50658865b00f19c801d /flang/lib/Frontend/CompilerInvocation.cpp | |
parent | 4abc35740760b626d3fcabd001593d46c4b595af (diff) | |
download | llvm-639a7ac648f1e50ccd2556e17d401c04f9cce625.zip llvm-639a7ac648f1e50ccd2556e17d401c04f9cce625.tar.gz llvm-639a7ac648f1e50ccd2556e17d401c04f9cce625.tar.bz2 |
[Clang][AST] Store injected template arguments in TemplateParameterList (#113579)
Currently, we store injected template arguments in
`RedeclarableTemplateDecl::CommonBase`. This approach has a couple
problems:
1. We can only access the injected template arguments of
`RedeclarableTemplateDecl` derived types, but other `Decl` kinds still
make use of the injected arguments (e.g.
`ClassTemplatePartialSpecializationDecl`,
`VarTemplatePartialSpecializationDecl`, and `TemplateTemplateParmDecl`).
2. Accessing the injected template arguments requires the common data
structure to be allocated. This may occur before we determine whether a
previous declaration exists (e.g. when comparing constraints), so if the
template _is_ a redeclaration, we end up discarding the common data
structure.
This patch moves the storage and access of injected template arguments
from `RedeclarableTemplateDecl` to `TemplateParameterList`.
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions