Skip to content

LSL/Luau compile error "Out of registers when trying to allocate 1 registers: exceed limit 255" with over-initialized for loop #81

@Suzanna-Linn

Description

@Suzanna-Linn

I don't think that this one is going to happen in real use, but just in case.

// VM Luau
default { state_entry() {
    float i;
    for (
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0, i = 0,
        i = 0, i = 0, i = 0
        ; FALSE;
    ) {}
    llOwnerSay("Ok");
}}
// -- > Out of registers when trying to allocate 1 registers: exceed limit 255

for(auto *init_expr : *for_stmt->getInitExprs())
{
init_expr->visit(this);
}

The increment works well. Is it the RegScope line?

for(auto *incr_expr : *for_stmt->getIncrExprs())
{
[[maybe_unused]] RegScope expr_scope(this);
incr_expr->visit(this);
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions