feat: no VoidValue, just Void type
This commit is contained in:
@@ -54,7 +54,7 @@ namespace IR
|
||||
argRegs.Push(arg);
|
||||
}
|
||||
// TODO: gather return type of the function
|
||||
auto dst = VoidValue();
|
||||
auto dst = AllocateNamed<Instruction>(new ValueHandle::Type {ValueHandle::Type::Kind::Void});
|
||||
m_ops->Push(new CallOp(dst, fn->name(), argRegs.view()));
|
||||
return dst;
|
||||
}
|
||||
@@ -75,7 +75,7 @@ namespace IR
|
||||
}
|
||||
|
||||
assert(0 && "unreachable");
|
||||
return reinterpret_cast<ValueHandle *>(new Void());
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
ValueHandle *ParseExpression(const Node *expression)
|
||||
@@ -187,11 +187,6 @@ namespace IR
|
||||
return new V(ValueHandle::kNoId, std::forward<Args>(args)...);
|
||||
}
|
||||
|
||||
ValueHandle *VoidValue()
|
||||
{
|
||||
return new Void();
|
||||
}
|
||||
|
||||
private:
|
||||
const Node *m_root = nullptr;
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ namespace IR
|
||||
{
|
||||
StringBuilder sb;
|
||||
sb.AppendIndent(indent);
|
||||
sb << result()->Format() << " = load " << m_ptr->Format();
|
||||
sb << result()->Format() << " = load " << result()->GetType()->Format() << ", " << m_ptr->Format();
|
||||
return sb.view();
|
||||
}
|
||||
|
||||
|
||||
@@ -129,27 +129,6 @@ namespace IR
|
||||
Type *m_value_typ;
|
||||
};
|
||||
|
||||
class Void : public ValueHandle
|
||||
{
|
||||
public:
|
||||
Void()
|
||||
: ValueHandle()
|
||||
{
|
||||
m_type = new Type{Type::Kind::Void};
|
||||
}
|
||||
|
||||
const Type *GetType() const override { return m_type; }
|
||||
|
||||
public:
|
||||
virtual StringView Format() const override
|
||||
{
|
||||
return m_type->Format();
|
||||
}
|
||||
|
||||
private:
|
||||
Type *m_type;
|
||||
};
|
||||
|
||||
class Instruction : public ValueHandle
|
||||
{
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user