DMD Issue 5416 - null should have a type of its own

This commit is contained in:
Alexey Prokhin
2011-12-15 13:31:39 +04:00
parent 88cff99bd4
commit edc4a5f003
7 changed files with 21 additions and 4 deletions

View File

@@ -137,7 +137,7 @@ llvm::Type * IrTypeBasic::basic2llvm(Type* t)
//////////////////////////////////////////////////////////////////////////////
IrTypePointer::IrTypePointer(Type * dt)
: IrType(dt, pointer2llvm(dt))
: IrType(dt, dt->ty == Tnull ? null2llvm(dt) : pointer2llvm(dt))
{
}
@@ -160,6 +160,13 @@ llvm::Type * IrTypePointer::pointer2llvm(Type * dt)
return llvm::PointerType::get(elemType, 0);
}
llvm::Type* IrTypePointer::null2llvm(Type* dt)
{
assert(dt->ty == Tnull && "not null type");
LLType* elemType = llvm::Type::getInt8Ty(llvm::getGlobalContext());
return llvm::PointerType::get(elemType, 0);
}
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////