feat: no VoidValue, just Void type

This commit is contained in:
2026-01-02 14:54:44 +01:00
parent 0b9cb7e7d9
commit a453603b9b
3 changed files with 3 additions and 29 deletions

View File

@@ -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;

View File

@@ -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();
}

View File

@@ -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: