def precompile(compiler, scope)
if @value
@value = CExpression.new(nil, nil, @value, @value.type) if not @value.kind_of? CExpression
if @value.type.untypedef.kind_of? Union
@value = @value.precompile_inner(compiler, scope)
func = scope.function.type
CExpression.new(CExpression.new(nil, :*, func.args.first, @value.type), :'=', @value, @value.type).precompile(compiler, scope)
@value = func.args.first
else
@value = CExpression.new(nil, nil, @value, scope.function.type.type).precompile_inner(compiler, scope)
end
scope.statements << self
end
Goto.new(scope.return_label).precompile(compiler, scope)
end