File tree Expand file tree Collapse file tree 1 file changed +18
-4
lines changed
src/dev/engine/internal/llvm Expand file tree Collapse file tree 1 file changed +18
-4
lines changed Original file line number Diff line number Diff 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 );
You can’t perform that action at this time.
0 commit comments