Go to the source code of this file.
|
| static cl::opt< bool > | DisableColoring ("no-stack-coloring", cl::init(false), cl::Hidden, cl::desc("Disable stack coloring")) |
| |
| static cl::opt< bool > | ProtectFromEscapedAllocas ("protect-from-escaped-allocas", cl::init(false), cl::Hidden, cl::desc("Do not optimize lifetime zones that ""are broken")) |
| | The user may write code that uses allocas outside of the declared lifetime zone. More...
|
| |
| static cl::opt< bool > | LifetimeStartOnFirstUse ("stackcoloring-lifetime-start-on-first-use", cl::init(true), cl::Hidden, cl::desc("Treat stack lifetimes as starting on first use, not on START marker.")) |
| | Enable enhanced dataflow scheme for lifetime analysis (treat first use of stack slot as start of slot lifetime, as opposed to looking for LIFETIME_START marker). More...
|
| |
| stack | coloring |
| |
| stack Merge disjoint stack | slots |
| |
| stack Merge disjoint stack | false |
| |
| #define DEBUG_TYPE "stackcoloring" |
| STATISTIC |
( |
NumMarkerSeen |
, |
|
|
"Number of lifetime markers found." |
|
|
) |
| |
| STATISTIC |
( |
StackSpaceSaved |
, |
|
|
"Number of bytes saved due to merging slots." |
|
|
) |
| |
| STATISTIC |
( |
StackSlotMerged |
, |
|
|
"Number of stack slot merged." |
|
|
) |
| |
| STATISTIC |
( |
EscapedAllocas |
, |
|
|
"Number of allocas that escaped the lifetime region" |
|
|
) |
| |
| cl::opt<bool> LifetimeStartOnFirstUse("stackcoloring-lifetime-start-on-first-use", cl::init(true), cl::Hidden, cl::desc("Treat stack lifetimes as starting on first use, not on START marker.")) |
|
static |
Enable enhanced dataflow scheme for lifetime analysis (treat first use of stack slot as start of slot lifetime, as opposed to looking for LIFETIME_START marker).
See "Implementation notes" below for more info.
| cl::opt<bool> ProtectFromEscapedAllocas("protect-from-escaped-allocas", cl::init(false), cl::Hidden, cl::desc("Do not optimize lifetime zones that ""are broken")) |
|
static |
The user may write code that uses allocas outside of the declared lifetime zone.
This can happen when the user returns a reference to a local data-structure. We can detect these cases and decide not to optimize the code. If this flag is enabled, we try to save the user. This option is treated as overriding LifetimeStartOnFirstUse below.