Skip to content

Commit c37d0ab

Browse files
Remove STILL_FURTHER_SPECIALIZABLE special casing
1 parent 8d08c9c commit c37d0ab

File tree

2 files changed

+20
-45
lines changed

2 files changed

+20
-45
lines changed

compiler/rustc_middle/src/ty/flags.rs

+11-41
Original file line numberDiff line numberDiff line change
@@ -101,17 +101,11 @@ impl FlagComputation {
101101

102102
&ty::Param(_) => {
103103
self.add_flags(TypeFlags::HAS_TY_PARAM);
104-
self.add_flags(TypeFlags::STILL_FURTHER_SPECIALIZABLE);
105104
}
106105

107106
ty::Coroutine(_, args) => {
108107
let args = args.as_coroutine();
109-
let should_remove_further_specializable =
110-
!self.flags.contains(TypeFlags::STILL_FURTHER_SPECIALIZABLE);
111108
self.add_args(args.parent_args());
112-
if should_remove_further_specializable {
113-
self.flags -= TypeFlags::STILL_FURTHER_SPECIALIZABLE;
114-
}
115109

116110
self.add_ty(args.kind_ty());
117111
self.add_ty(args.resume_ty());
@@ -122,22 +116,12 @@ impl FlagComputation {
122116
}
123117

124118
ty::CoroutineWitness(_, args) => {
125-
let should_remove_further_specializable =
126-
!self.flags.contains(TypeFlags::STILL_FURTHER_SPECIALIZABLE);
127119
self.add_args(args);
128-
if should_remove_further_specializable {
129-
self.flags -= TypeFlags::STILL_FURTHER_SPECIALIZABLE;
130-
}
131120
}
132121

133122
&ty::Closure(_, args) => {
134123
let args = args.as_closure();
135-
let should_remove_further_specializable =
136-
!self.flags.contains(TypeFlags::STILL_FURTHER_SPECIALIZABLE);
137124
self.add_args(args.parent_args());
138-
if should_remove_further_specializable {
139-
self.flags -= TypeFlags::STILL_FURTHER_SPECIALIZABLE;
140-
}
141125

142126
self.add_ty(args.sig_as_fn_ptr_ty());
143127
self.add_ty(args.kind_ty());
@@ -146,12 +130,7 @@ impl FlagComputation {
146130

147131
&ty::CoroutineClosure(_, args) => {
148132
let args = args.as_coroutine_closure();
149-
let should_remove_further_specializable =
150-
!self.flags.contains(TypeFlags::STILL_FURTHER_SPECIALIZABLE);
151133
self.add_args(args.parent_args());
152-
if should_remove_further_specializable {
153-
self.flags -= TypeFlags::STILL_FURTHER_SPECIALIZABLE;
154-
}
155134

156135
self.add_ty(args.kind_ty());
157136
self.add_ty(args.signature_parts_ty());
@@ -167,21 +146,17 @@ impl FlagComputation {
167146

168147
&ty::Placeholder(..) => {
169148
self.add_flags(TypeFlags::HAS_TY_PLACEHOLDER);
170-
self.add_flags(TypeFlags::STILL_FURTHER_SPECIALIZABLE);
171149
}
172150

173-
&ty::Infer(infer) => {
174-
self.add_flags(TypeFlags::STILL_FURTHER_SPECIALIZABLE);
175-
match infer {
176-
ty::FreshTy(_) | ty::FreshIntTy(_) | ty::FreshFloatTy(_) => {
177-
self.add_flags(TypeFlags::HAS_TY_FRESH)
178-
}
151+
&ty::Infer(infer) => match infer {
152+
ty::FreshTy(_) | ty::FreshIntTy(_) | ty::FreshFloatTy(_) => {
153+
self.add_flags(TypeFlags::HAS_TY_FRESH)
154+
}
179155

180-
ty::TyVar(_) | ty::IntVar(_) | ty::FloatVar(_) => {
181-
self.add_flags(TypeFlags::HAS_TY_INFER)
182-
}
156+
ty::TyVar(_) | ty::IntVar(_) | ty::FloatVar(_) => {
157+
self.add_flags(TypeFlags::HAS_TY_INFER)
183158
}
184-
}
159+
},
185160

186161
&ty::Adt(_, args) => {
187162
self.add_args(args);
@@ -358,24 +333,19 @@ impl FlagComputation {
358333
self.add_args(uv.args);
359334
self.add_flags(TypeFlags::HAS_CT_PROJECTION);
360335
}
361-
ty::ConstKind::Infer(infer) => {
362-
self.add_flags(TypeFlags::STILL_FURTHER_SPECIALIZABLE);
363-
match infer {
364-
InferConst::Fresh(_) => self.add_flags(TypeFlags::HAS_CT_FRESH),
365-
InferConst::Var(_) => self.add_flags(TypeFlags::HAS_CT_INFER),
366-
}
367-
}
336+
ty::ConstKind::Infer(infer) => match infer {
337+
InferConst::Fresh(_) => self.add_flags(TypeFlags::HAS_CT_FRESH),
338+
InferConst::Var(_) => self.add_flags(TypeFlags::HAS_CT_INFER),
339+
},
368340
ty::ConstKind::Bound(debruijn, _) => {
369341
self.add_bound_var(debruijn);
370342
self.add_flags(TypeFlags::HAS_CT_BOUND);
371343
}
372344
ty::ConstKind::Param(_) => {
373345
self.add_flags(TypeFlags::HAS_CT_PARAM);
374-
self.add_flags(TypeFlags::STILL_FURTHER_SPECIALIZABLE);
375346
}
376347
ty::ConstKind::Placeholder(_) => {
377348
self.add_flags(TypeFlags::HAS_CT_PLACEHOLDER);
378-
self.add_flags(TypeFlags::STILL_FURTHER_SPECIALIZABLE);
379349
}
380350
ty::ConstKind::Value(cv) => self.add_ty(cv.ty),
381351
ty::ConstKind::Expr(e) => self.add_args(e.args()),

compiler/rustc_type_ir/src/flags.rs

+9-4
Original file line numberDiff line numberDiff line change
@@ -111,15 +111,20 @@ bitflags::bitflags! {
111111

112112
/// Does this value have parameters/placeholders/inference variables which could be
113113
/// replaced later, in a way that would change the results of `impl` specialization?
114-
const STILL_FURTHER_SPECIALIZABLE = 1 << 21;
114+
const STILL_FURTHER_SPECIALIZABLE = TypeFlags::HAS_TY_PARAM.bits()
115+
| TypeFlags::HAS_TY_PLACEHOLDER.bits()
116+
| TypeFlags::HAS_TY_INFER.bits()
117+
| TypeFlags::HAS_CT_PARAM.bits()
118+
| TypeFlags::HAS_CT_PLACEHOLDER.bits()
119+
| TypeFlags::HAS_CT_INFER.bits();
115120

116121
/// Does this value have `InferTy::FreshTy/FreshIntTy/FreshFloatTy`?
117-
const HAS_TY_FRESH = 1 << 22;
122+
const HAS_TY_FRESH = 1 << 21;
118123

119124
/// Does this value have `InferConst::Fresh`?
120-
const HAS_CT_FRESH = 1 << 23;
125+
const HAS_CT_FRESH = 1 << 22;
121126

122127
/// Does this have any binders with bound vars (e.g. that need to be anonymized)?
123-
const HAS_BINDER_VARS = 1 << 24;
128+
const HAS_BINDER_VARS = 1 << 23;
124129
}
125130
}

0 commit comments

Comments
 (0)