23 lines
1.1 KiB
Markdown
23 lines
1.1 KiB
Markdown
---
|
|
weight: 100
|
|
title: "Flatten control flow"
|
|
description: "Control flow flattener"
|
|
icon: "article"
|
|
date: "2025-05-01T18:47:58-05:00"
|
|
lastmod: "2025-05-01T18:47:58-05:00"
|
|
---
|
|
|
|
This option enables Control Flow Flattening (CFF), restructuring control flow and statements into a dispatch-like state machine. The flattener prioritizes correctness; if flattening a block could cause side effects, it either skips that block or only partially flattens it.
|
|
|
|
The control flow flattener supports the following branching syntaxes:
|
|
- `if` statements
|
|
- `while` and `repeat` loops
|
|
- numeric `for` loops
|
|
- `break` and `continue` statements
|
|
- `for-in` loops and even support for [Luau's generalized iteration](https://luau.org/syntax#generalized-iteration)
|
|
|
|
The following child options are available:
|
|
|
|
- `Expression Decomposition`: Breaks apart expressions into CFF blocks and temporaries, can kill performance.
|
|
- `Wrap CFF blocks`: Will move compatible CFF blocks into their own closure in a lookup table. Can speed up larger flattening targets.
|
|
- `Hoist locals`: Will move local storage into a lookup table. Useful to cut down on the number of used locals. |