structstd.zig.llvm.Builder.WipFunction.WipSwitch[src]

Fields

index: u32
instruction: Instruction.Index

Functions

FunctionaddCase[src]

pub fn addCase( self: *WipSwitch, val: Constant, dest: Block.Index, wip: *WipFunction, ) Allocator.Error!void

Parameters

Source Code

Source code
pub fn addCase(
    self: *WipSwitch,
    val: Constant,
    dest: Block.Index,
    wip: *WipFunction,
) Allocator.Error!void {
    const instruction = wip.instructions.get(@intFromEnum(self.instruction));
    var extra = wip.extraDataTrail(Instruction.Switch, instruction.data);
    assert(val.typeOf(wip.builder) == extra.data.val.typeOfWip(wip));
    extra.trail.nextMut(extra.data.cases_len, Constant, wip)[self.index] = val;
    extra.trail.nextMut(extra.data.cases_len, Block.Index, wip)[self.index] = dest;
    self.index += 1;
    dest.ptr(wip).branches += 1;
}

Functionfinish[src]

pub fn finish(self: WipSwitch, wip: *WipFunction) void

Parameters

Source Code

Source code
pub fn finish(self: WipSwitch, wip: *WipFunction) void {
    const instruction = wip.instructions.get(@intFromEnum(self.instruction));
    const extra = wip.extraData(Instruction.Switch, instruction.data);
    assert(self.index == extra.cases_len);
}

Source Code

Source code
pub const WipSwitch = struct {
    index: u32,
    instruction: Instruction.Index,

    pub fn addCase(
        self: *WipSwitch,
        val: Constant,
        dest: Block.Index,
        wip: *WipFunction,
    ) Allocator.Error!void {
        const instruction = wip.instructions.get(@intFromEnum(self.instruction));
        var extra = wip.extraDataTrail(Instruction.Switch, instruction.data);
        assert(val.typeOf(wip.builder) == extra.data.val.typeOfWip(wip));
        extra.trail.nextMut(extra.data.cases_len, Constant, wip)[self.index] = val;
        extra.trail.nextMut(extra.data.cases_len, Block.Index, wip)[self.index] = dest;
        self.index += 1;
        dest.ptr(wip).branches += 1;
    }

    pub fn finish(self: WipSwitch, wip: *WipFunction) void {
        const instruction = wip.instructions.get(@intFromEnum(self.instruction));
        const extra = wip.extraData(Instruction.Switch, instruction.data);
        assert(self.index == extra.cases_len);
    }
}