Flood aggregate assignments with Top.

This commit is contained in:
Camille GILLOT 2023-02-18 09:57:13 +00:00
parent 650683756f
commit 7213eaa1c0
2 changed files with 5 additions and 3 deletions

View file

@ -122,7 +122,10 @@ impl<'tcx> ValueAnalysis<'tcx> for ConstAnalysis<'_, 'tcx> {
) {
match rvalue {
Rvalue::Aggregate(kind, operands) => {
state.flood_with(target.as_ref(), self.map(), FlatSet::Bottom);
// If we assign `target = Enum::Variant#0(operand)`,
// we must make sure that all `target as Variant#i` are `Top`.
state.flood(target.as_ref(), self.map());
if let Some(target_idx) = self.map().find(target.as_ref()) {
let (variant_target, variant_index) = match **kind {
AggregateKind::Tuple | AggregateKind::Closure(..) => {