DeadObjectElimination: handle the builtin "prepareInitialization"

which allows e.g. eliminating dead `Atomic` values
This commit is contained in:
Erik Eckstein
2025-08-01 14:55:42 +02:00
parent 3d6c240aa6
commit adc5d67a9a
2 changed files with 14 additions and 1 deletions

View File

@@ -318,7 +318,8 @@ static bool canZapInstruction(SILInstruction *Inst, bool acceptRefCountInsts,
// The value form of zero init is not a user of any operand. The address
// form however is easily zappable because it's always a trivial store.
if (auto bi = dyn_cast<BuiltinInst>(Inst)) {
if (bi->getBuiltinKind() == BuiltinValueKind::ZeroInitializer) {
if (bi->getBuiltinKind() == BuiltinValueKind::ZeroInitializer ||
bi->getBuiltinKind() == BuiltinValueKind::PrepareInitialization) {
return true;
}
}