Track reason for creating a ReifyShim
KCFI needs to be able to tell which kind of `ReifyShim` it is examining in order to decide whether to use a concrete type (`FnPtr` case) or an abstract case (`Vtable` case). You can *almost* tell this from context, but there is one case where you can't - if a trait has a method which is *not* `#[track_caller]`, with an impl that *is* `#[track_caller]`, both the vtable and a function pointer created from that method will be `ReifyShim(def_id)`. Currently, the reason is optional to ensure no additional unique `ReifyShim`s are added without KCFI on. However, the case in which an extra `ReifyShim` is created is sufficiently rare that this may be worth revisiting to reduce complexity.
This commit is contained in:
parent
93c2bace58
commit
6aa89f684e
9 changed files with 60 additions and 19 deletions
|
@ -449,6 +449,7 @@ TrivialTypeTraversalAndLiftImpls! {
|
|||
crate::ty::ClosureKind,
|
||||
crate::ty::ParamConst,
|
||||
crate::ty::ParamTy,
|
||||
crate::ty::instance::ReifyReason,
|
||||
interpret::AllocId,
|
||||
interpret::CtfeProvenance,
|
||||
interpret::Scalar,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue