|
LLVM
3.7.0
|
#include "llvm/CodeGen/Passes.h"#include "llvm/ADT/BitVector.h"#include "llvm/ADT/DepthFirstIterator.h"#include "llvm/ADT/PostOrderIterator.h"#include "llvm/ADT/SetVector.h"#include "llvm/ADT/SmallPtrSet.h"#include "llvm/ADT/SparseSet.h"#include "llvm/ADT/Statistic.h"#include "llvm/Analysis/ValueTracking.h"#include "llvm/CodeGen/LiveInterval.h"#include "llvm/CodeGen/MachineBasicBlock.h"#include "llvm/CodeGen/MachineBranchProbabilityInfo.h"#include "llvm/CodeGen/MachineDominators.h"#include "llvm/CodeGen/MachineFrameInfo.h"#include "llvm/CodeGen/MachineFunctionPass.h"#include "llvm/CodeGen/MachineLoopInfo.h"#include "llvm/CodeGen/MachineMemOperand.h"#include "llvm/CodeGen/MachineModuleInfo.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/CodeGen/PseudoSourceValue.h"#include "llvm/CodeGen/SlotIndexes.h"#include "llvm/CodeGen/StackProtector.h"#include "llvm/IR/DebugInfo.h"#include "llvm/IR/Dominators.h"#include "llvm/IR/Function.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/Module.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/Debug.h"#include "llvm/Support/raw_ostream.h"#include "llvm/Target/TargetInstrInfo.h"#include "llvm/Target/TargetRegisterInfo.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "stackcoloring" |
Functions | |
| 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") | |
| INITIALIZE_PASS_BEGIN (StackColoring,"stack-coloring","Merge disjoint stack slots", false, false) INITIALIZE_PASS_END(StackColoring | |
Variables | |
| 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... | |
| stack | coloring |
| stack Merge disjoint stack | slots |
| stack Merge disjoint stack | false |
| #define DEBUG_TYPE "stackcoloring" |
Definition at line 59 of file StackColoring.cpp.
| INITIALIZE_PASS_BEGIN | ( | StackColoring | , |
| "stack-coloring" | , | ||
| "Merge disjoint stack slots" | , | ||
| false | , | ||
| false | |||
| ) |
| 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" | |||
| ) |
| stack coloring |
Definition at line 185 of file StackColoring.cpp.
|
static |
Definition at line 185 of file StackColoring.cpp.
|
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.
Definition at line 185 of file StackColoring.cpp.
1.8.6