in libraries/emitters/src/IREmitter.cpp [86:145]
LLVMType IREmitter::Type(VariableType type) const
{
switch (type)
{
case VariableType::Void:
return GetBaseVariableType(type);
case VariableType::VoidPointer:
// We use BytePointer to avoid LLVM Assertion failed: isValidElementType(EltTy) && "Invalid type for pointer element!",
// file ~\llvm-8\lib\ir\type.cpp, line 632
return GetBaseVariableType(VariableType::Byte)->getPointerTo();
case VariableType::VoidPointerPointer:
return GetBaseVariableType(VariableType::Byte)->getPointerTo()->getPointerTo();
case VariableType::Boolean:
return GetBaseVariableType(type);
case VariableType::Byte:
return GetBaseVariableType(type);
case VariableType::BytePointer:
return GetBaseVariableType(VariableType::Byte)->getPointerTo();
case VariableType::BytePointerPointer:
return GetBaseVariableType(VariableType::Byte)->getPointerTo()->getPointerTo();
case VariableType::Int16:
return GetBaseVariableType(type);
case VariableType::Int16Pointer:
return GetBaseVariableType(VariableType::Int16)->getPointerTo();
case VariableType::Int16PointerPointer:
return GetBaseVariableType(VariableType::Int16)->getPointerTo()->getPointerTo();
case VariableType::Int32:
return GetBaseVariableType(type);
case VariableType::Int32Pointer:
return GetBaseVariableType(VariableType::Int32)->getPointerTo();
case VariableType::Int32PointerPointer:
return GetBaseVariableType(VariableType::Int32)->getPointerTo()->getPointerTo();
case VariableType::Int64:
return GetBaseVariableType(type);
case VariableType::Int64Pointer:
return GetBaseVariableType(VariableType::Int64)->getPointerTo();
case VariableType::Int64PointerPointer:
return GetBaseVariableType(VariableType::Int64)->getPointerTo()->getPointerTo();
case VariableType::Float:
return GetBaseVariableType(type);
case VariableType::FloatPointer:
return GetBaseVariableType(VariableType::Float)->getPointerTo();
case VariableType::FloatPointerPointer:
return GetBaseVariableType(VariableType::Float)->getPointerTo()->getPointerTo();
case VariableType::Double:
return GetBaseVariableType(type);
case VariableType::DoublePointer:
return GetBaseVariableType(VariableType::Double)->getPointerTo();
case VariableType::DoublePointerPointer:
return GetBaseVariableType(VariableType::Double)->getPointerTo()->getPointerTo();
case VariableType::Char8:
return GetBaseVariableType(type);
case VariableType::Char8Pointer:
return GetBaseVariableType(VariableType::Char8)->getPointerTo();
case VariableType::Char8PointerPointer:
return GetBaseVariableType(VariableType::Char8)->getPointerTo()->getPointerTo();
default:
throw EmitterException(EmitterError::valueTypeNotSupported);
}
}