This commit is contained in:
Andrzej Janik 2020-12-09 21:27:22 +01:00
commit 22ead3ea56

View file

@ -4791,6 +4791,10 @@ impl SpecialRegistersMap {
self.reg_to_id.insert(new, id); self.reg_to_id.insert(new, id);
id id
} }
hash_map::Entry::Vacant(e) => {
drop(e);
match self.reg_to_id.entry(new) {
hash_map::Entry::Occupied(e) => *e.get(),
hash_map::Entry::Vacant(e) => { hash_map::Entry::Vacant(e) => {
let numeric_id = *current_id; let numeric_id = *current_id;
*current_id += 1; *current_id += 1;
@ -4801,6 +4805,8 @@ impl SpecialRegistersMap {
} }
} }
} }
}
}
struct GlobalStringIdResolver<'input> { struct GlobalStringIdResolver<'input> {
current_id: spirv::Word, current_id: spirv::Word,
@ -5162,7 +5168,19 @@ impl ExpandedStatement {
offset_src: constant_src, offset_src: constant_src,
}) })
} }
Statement::RepackVector(_) => todo!(), Statement::RepackVector(repack) => {
let packed = f(repack.packed, !repack.is_extract);
let unpacked = repack
.unpacked
.iter()
.map(|id| f(*id, repack.is_extract))
.collect();
Statement::RepackVector(RepackVectorDetails {
packed,
unpacked,
..repack
})
}
} }
} }
} }