about summary refs log tree commit diff
path: root/compiler/rustc_parse/src
diff options
context:
space:
mode:
authorJubilee <46493976+workingjubilee@users.noreply.github.com>2024-03-23 22:59:42 -0700
committerGitHub <noreply@github.com>2024-03-23 22:59:42 -0700
commitb9b65f816d5157159b48ff76b7944ad0e0711a34 (patch)
tree0031dbc53484879b2e5eb990503f48ebee11da14 /compiler/rustc_parse/src
parent46f9b3e8b9cbffd093a4d1e3fb9b8664213ef52b (diff)
parentdec36c3d6eca67c900b7bdf03bd8d9dd68c4aa34 (diff)
downloadrust-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