jcsxky wrote:

@mizvekov After I apply you changes in this patch, 
https://github.com/llvm/llvm-project/issues/91677 is still crash(although it 
makes sense with `-ast-dump` option). I put it below for explanation clearly:
```cpp
template <typename> struct t1 {
  template <typename>
  struct t2 {};
};

template <typename T>
t1<T>::template t2<T> f1();

void f2() {
  f1<bool>();
}
```

The reason seems that we transform `TemplateDecl` to the original one and do 
nothing and then crash in codegen stage. For `t1<T>::t2<T>`, we have 
transformed qualifier(`t1<T>`) in `TransformElaboratedType`. But, we transform 
qualifier in `TransformTemplateName` for `t2<T>` again because of transforming 
`TransformTemplateSpecializationType`. This leads to the  transformation of the 
`TemplateDecl` as I described in the beginning.
I think we can reuse the transformed qualifier(`t1<T>`) in 
`TransformElaboratedType` and this is what I did in 
https://github.com/llvm/llvm-project/pull/93411. Could you please take another 
look?

https://github.com/llvm/llvm-project/pull/93433
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to