Skip to content

Commit 4391d15

Browse files
committed
[NFC] Convenience for setting a singleton explosion
1 parent 595d923 commit 4391d15

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

lib/IRGen/IRGenSIL.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,11 @@ class LoweredValue {
200200
}
201201
ExternalUnion<Kind, Members, getMemberIndexForKind> Storage;
202202

203+
explicit LoweredValue(llvm::Value *singletonValue)
204+
: kind(Kind::SingletonExplosion) {
205+
Storage.emplace<SingletonExplosion>(kind, singletonValue);
206+
}
207+
203208
public:
204209

205210
/// Create an address value without a stack restore point.
@@ -275,6 +280,10 @@ class LoweredValue {
275280
Storage.moveConstruct(kind, std::move(lv.Storage));
276281
}
277282

283+
static LoweredValue forSingletonExplosion(llvm::Value *value) {
284+
return LoweredValue(value);
285+
}
286+
278287
LoweredValue &operator=(LoweredValue &&lv) {
279288
Storage.moveAssign(kind, lv.kind, std::move(lv.Storage));
280289
kind = lv.kind;
@@ -491,6 +500,10 @@ class IRGenSILFunction :
491500
assert(v->getType().isObject() && "explosion for address value?!");
492501
setLoweredValue(v, LoweredValue(e));
493502
}
503+
void setLoweredSingletonExplosion(SILValue v, llvm::Value *value) {
504+
assert(v->getType().isObject() && "explosion for address value?!");
505+
setLoweredValue(v, LoweredValue::forSingletonExplosion(value));
506+
}
494507

495508
void setCorrespondingLoweredValues(SILInstructionResultArray results,
496509
Explosion &allValues) {

0 commit comments

Comments
 (0)