Skip to content

Commit abde985

Browse files
authored
Merge pull request rust-lang#166 from vext01/handle-null-ptrs
Serialise null pointer constants.
2 parents ef1ca9f + 5e851eb commit abde985

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

llvm/lib/YkIR/YkIRWriter.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1284,9 +1284,25 @@ class YkIRWriter {
12841284
serialiseString(toString(C));
12851285
}
12861286

1287+
void serialiseConstantNullPtr(ConstantPointerNull *NP) {
1288+
// `Const` discriminator:
1289+
OutStreamer.emitInt8(ConstKindVal);
1290+
// ty_idx:
1291+
OutStreamer.emitSizeT(typeIndex(NP->getType()));
1292+
// num_bytes:
1293+
DataLayout DL(&M);
1294+
assert(DL.getPointerSize(NP->getType()->getAddressSpace()) ==
1295+
sizeof(size_t));
1296+
OutStreamer.emitSizeT(sizeof(size_t));
1297+
// bytes:
1298+
OutStreamer.emitSizeT(0);
1299+
}
1300+
12871301
void serialiseConstant(Constant *C) {
12881302
if (ConstantInt *CI = dyn_cast<ConstantInt>(C)) {
12891303
serialiseConstantInt(CI);
1304+
} else if (ConstantPointerNull *NP = dyn_cast<ConstantPointerNull>(C)) {
1305+
serialiseConstantNullPtr(NP);
12901306
} else {
12911307
serialiseUnimplementedConstant(C);
12921308
}

0 commit comments

Comments
 (0)