add the prepareInitialization builtin.

It is like `zeroInitializer`, but does not actually initialize the memory.
It only indicates to mandatory passes that the memory is going to be initialized.
This commit is contained in:
Erik Eckstein
2025-05-20 20:16:05 +02:00
parent 3cbe94d7d1
commit 9052652651
12 changed files with 24 additions and 5 deletions

View File

@@ -1009,7 +1009,8 @@ MemoryBehavior SILInstruction::getMemoryBehavior() const {
if (auto *BI = dyn_cast<BuiltinInst>(this)) {
// Handle Swift builtin functions.
const BuiltinInfo &BInfo = BI->getBuiltinInfo();
if (BInfo.ID == BuiltinValueKind::ZeroInitializer) {
if (BInfo.ID == BuiltinValueKind::ZeroInitializer ||
BInfo.ID == BuiltinValueKind::PrepareInitialization) {
// The address form of `zeroInitializer` writes to its argument to
// initialize it. The value form has no side effects.
return BI->getArguments().size() > 0