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

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions