[llvm-branch-commits] [clang] [Serialization] Code cleanups and polish 83233 (PR #83237)

Chuanqi Xu via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Sat Apr 6 23:08:03 PDT 2024


ChuanqiXu9 wrote:

Thanks for the reduced test case. It is pretty helpful. I've added it to the current patch.

The root cause of the issue comes from an oversight in https://github.com/llvm/llvm-project/pull/83108/files#diff-dffd10772d07fb8c737cdf812839afa0173447c4812698c0c19618c34d92daddR806-R829. That we calculate the ODR Hash for class template specialization twice. Then for the example you described, the linear recursive computation becomes to somewhat similar to fibonacci computation:

```
wrap<40> -> wrap<39>  -> wrap<38> -> ...
                  |                        -> wrap<38>
                   -> wrap<39> -> wrap<38>
                                           -> wrap<38>
```

This test case passes quickly now after I remove the duplicated ODR computation.

https://github.com/llvm/llvm-project/pull/83237


More information about the llvm-branch-commits mailing list