diff options
| author | Jubilee <46493976+workingjubilee@users.noreply.github.com> | 2024-03-23 22:59:42 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-23 22:59:42 -0700 |
| commit | b9b65f816d5157159b48ff76b7944ad0e0711a34 (patch) | |
| tree | 0031dbc53484879b2e5eb990503f48ebee11da14 /compiler/rustc_parse/src | |
| parent | 46f9b3e8b9cbffd093a4d1e3fb9b8664213ef52b (diff) | |
| parent | dec36c3d6eca67c900b7bdf03bd8d9dd68c4aa34 (diff) | |
| download | rust-b9b65f816d5157159b48ff76b7944ad0e0711a34.tar.gz rust-b9b65f816d5157159b48ff76b7944ad0e0711a34.zip | |
Rollup merge of #122875 - maurer:cfi-transparent-termination, r=workingjubilee
CFI: Support self_cell-like recursion
Current `transform_ty` attempts to avoid cycles when normalizing `#[repr(transparent)]` types to their interior, but runs afoul of this pattern used in `self_cell`:
```
struct X<T> {
x: u8,
p: PhantomData<T>,
}
#[repr(transparent)]
struct Y(X<Y>);
```
When attempting to normalize Y, it will still cycle indefinitely. By using a types-visited list, this will instead get expanded exactly one layer deep to X<Y>, and then stop, not attempting to normalize `Y` any further.
This PR was split off from #121962 as part of fixing the larger vtable compatibility issues.
r? ``````@workingjubilee``````
Diffstat (limited to 'compiler/rustc_parse/src')
0 files changed, 0 insertions, 0 deletions
