Skip to documentation
SLOP

tiny.choir.ir.cfg

Reference tiny.choir ir cfg

Defined in ir.

API (8)

Actions

Public operations.

No direct callersNo direct callsircfg
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Called byCallsBlockaddOperationBlockinsertBeforeir.cfgattachAssumeCapacityir.cfgprepareir.cfgattach
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callsir.cfgattachprivate sourcelib.choir.src.core.operation.lifecycleMethodsir.cfgattachAssumeCapacity
Static calls · unresolved targets: 0 · external targets: 2.
Called byCallsNo direct callersprivate sourcelib.choir.src.core.cfgcontainsExcludingir.cfgcontains
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callsprivate sourcelib.choir.src.core.verifyverifyPredecessorsir.cfgcontainsBounded
Static calls · unresolved targets: 0 · external targets: 2.
Called byCallsir.cfgdetachir.cfgdetachReplacedprivate sourcelib.choir.src.core.cfgcontainsExcludingir.cfgcontainsOther
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsprivate sourcelib.choir.src.core.block.BlockunlinkOperationprivate sourcelib.choir.src.core.operation.lifecycleMethodsir.cfgcontainsOtherprivate sourcelib.choir.src.core.cfgremovePredecessorir.cfgdetach
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsprivate sourcelib.choir.src.core.operation.lifecycleMethodsir.cfgcontainsOtherprivate sourcelib.choir.src.core.cfgcontainsTargetprivate sourcelib.choir.src.core.cfgremovePredecessorir.cfgdetachReplaced
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsir.cfgattachprivate sourcelib.choir.src.core.operation.lifecycleMethodsprivate sourcelib.choir.src.core.cfgappearedBeforeir.cfgprepare
Static calls · unresolved targets: 0 · external targets: 2.

Source: lib/choir/src/core/cfg.zig

zig
pub fn contains(source: anytype, target: anytype) bool {    return containsExcluding(source, target, null);}pub fn containsOther(source: anytype, target: anytype, excluded: anytype) bool {    return containsExcluding(source, target, @ptrCast(excluded));}pub fn containsBounded(    source: anytype,    target: anytype,    operation_limit: usize,) error{OperationListCorrupted}!bool {    var operations = source.getOperations();    var count: usize = 0;    while (operations.next()) |operation| {        count += 1;        if (count > operation_limit) return error.OperationListCorrupted;        for (operation.successors.items) |successor| {            if (successor == target) return true;        }    }    return false;}fn containsExcluding(    source: anytype,    target: anytype,    excluded: ?*const anyopaque,) bool {    var operations = source.getOperations();    while (operations.next()) |operation| {        const operation_ptr: *const anyopaque = @ptrCast(operation);        if (excluded != null and excluded.? == operation_ptr) continue;        for (operation.successors.items) |successor| {            if (successor == target) return true;        }    }    return false;}pub fn prepare(source: anytype, successors: anytype) !void {    for (successors, 0..) |successor, index| {        if (appearedBefore(successors, index, successor)) continue;        if (successor.hasPredecessor(source)) continue;        try successor.predecessors.ensureUnusedCapacity(successor.allocator, 1);    }}pub fn attachAssumeCapacity(source: anytype, successors: anytype) void {    for (successors) |successor| {        if (successor.hasPredecessor(source)) continue;        successor.predecessors.appendAssumeCapacity(source);    }}pub fn attach(source: anytype, operation: anytype) !void {    try prepare(source, operation.successors.items);    attachAssumeCapacity(source, operation.successors.items);}pub fn detach(source: anytype, operation: anytype) void {    for (operation.successors.items) |successor| {        if (containsOther(source, successor, operation)) continue;        removePredecessor(successor, source);    }}pub fn detachReplaced(source: anytype, operation: anytype, successors: anytype) void {    for (operation.successors.items) |successor| {        if (containsTarget(successors, successor)) continue;        if (containsOther(source, successor, operation)) continue;        removePredecessor(successor, source);    }}fn appearedBefore(successors: anytype, index: usize, expected: anytype) bool {    for (successors[0..index]) |successor| {        if (successor == expected) return true;    }    return false;}fn containsTarget(successors: anytype, expected: anytype) bool {    for (successors) |successor| {        if (successor == expected) return true;    }    return false;}fn removePredecessor(target: anytype, source: anytype) void {    var index: usize = 0;    while (index < target.predecessors.items.len) {        if (target.predecessors.items[index] != source) {            index += 1;            continue;        }        _ = target.predecessors.swapRemove(index);    }}

Source: lib/choir/src/core/root.zig:11

zig
pub const cfg = @import("cfg.zig");

Also reachable as

backends.wasm.emission.module_encoding.common.ir.cfg.

Audit

Definitions9
Public names18
Members0
Version26.7.0
Revisiondaab053ee433