Skip to content

Commit b1319ed

Browse files
committed
LLVMCodeBuilder: Fix ValueData constants
1 parent e139e3c commit b1319ed

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

src/dev/engine/internal/llvm/llvmcodebuilder.cpp

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1759,10 +1759,24 @@ llvm::Value *LLVMCodeBuilder::createValue(LLVMRegisterPtr reg)
17591759
llvm::Constant *value = castConstValue(reg->constValue, TYPE_MAP[reg->constValue.type()]);
17601760
llvm::Value *ret = m_builder.CreateAlloca(m_valueDataType);
17611761

1762-
if (reg->constValue.type() == ValueType::String)
1763-
value = llvm::ConstantExpr::getPtrToInt(value, m_valueDataType->getElementType(0));
1764-
else
1765-
value = llvm::ConstantExpr::getBitCast(value, m_valueDataType->getElementType(0));
1762+
switch (reg->constValue.type()) {
1763+
case ValueType::Number:
1764+
value = llvm::ConstantExpr::getBitCast(value, m_valueDataType->getElementType(0));
1765+
break;
1766+
1767+
case ValueType::Bool:
1768+
// Assuming union type is int64
1769+
value = m_builder.getInt64(reg->constValue.toBool());
1770+
break;
1771+
1772+
case ValueType::String:
1773+
value = llvm::ConstantExpr::getPtrToInt(value, m_valueDataType->getElementType(0));
1774+
break;
1775+
1776+
default:
1777+
assert(false);
1778+
break;
1779+
}
17661780

17671781
llvm::Constant *type = m_builder.getInt32(static_cast<uint32_t>(reg->constValue.type()));
17681782
llvm::Constant *padding = m_builder.getInt32(0);

0 commit comments

Comments
 (0)