Skip to content

Commit cb11f84

Browse files
committed
LoadableByAddress: handle the unchecked_bitwise_cast instruction
Fixes a compiler crash in LoadableByAddress. Unfortunately I don't have a test case for this.
1 parent bf42216 commit cb11f84

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

lib/IRGen/LoadableByAddress.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4332,6 +4332,17 @@ class RewriteUser : SILInstructionVisitor<RewriteUser> {
43324332
assignment.markForDeletion(bc);
43334333
}
43344334

4335+
void visitUncheckedBitwiseCastInst(UncheckedBitwiseCastInst *bc) {
4336+
auto addr = assignment.getAddressForValue(bc->getOperand());
4337+
auto builder = assignment.getBuilder(bc->getIterator());
4338+
auto loaded = builder.createLoad(bc->getLoc(), addr,
4339+
LoadOwnershipQualifier::Unqualified);
4340+
auto newVal = builder.createUncheckedBitwiseCast(bc->getLoc(), loaded,
4341+
bc->getType());
4342+
bc->replaceAllUsesWith(newVal);
4343+
assignment.markForDeletion(bc);
4344+
}
4345+
43354346
void visitEnumInst(EnumInst *e) {
43364347
assert(!assignment.isLargeLoadableType(e->getType()));
43374348
auto opd = e->getOperand();

0 commit comments

Comments
 (0)