LLVM API Documentation
#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/MC/MCInstrItineraries.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.
Defines | |
#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")) |
stack | coloring |
stack Merge disjoint stack | slots |
stack Merge disjoint stack | false |
#define DEBUG_TYPE "stackcoloring" |
Definition at line 60 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 186 of file StackColoring.cpp.
cl::opt<bool> DisableColoring("no-stack-coloring", cl::init(false), cl::Hidden, cl::desc("Disable stack coloring")) [static] |
stack Merge disjoint stack false |
Definition at line 186 of file StackColoring.cpp.
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.
stack Merge disjoint stack slots |
Definition at line 186 of file StackColoring.cpp.