15 #ifndef LLVM_CODEGEN_FUNCTIONLOWERINGINFO_H
16 #define LLVM_CODEGEN_FUNCTIONLOWERINGINFO_H
34 class BranchProbabilityInfo;
40 class MachineBasicBlock;
41 class MachineFunction;
42 class MachineModuleInfo;
43 class MachineRegisterInfo;
147 assert(R == 0 &&
"Already initialized this value register!");
154 if (!LiveOutRegInfo.inBounds(Reg))
173 const APInt &KnownZero,
const APInt &KnownOne) {
175 if (NumSignBits == 1 && KnownZero == 0 && KnownOne == 0)
178 LiveOutRegInfo.grow(Reg);
197 unsigned Reg = It->second;
198 LiveOutRegInfo.grow(Reg);
199 LiveOutRegInfo[
Reg].IsValid =
false;
224 MachineModuleInfo *MMI, MachineBasicBlock *MBB);
229 MachineBasicBlock *MBB);
LLVM Argument representation.
SmallPtrSet< const Instruction *, 8 > CatchInfoFound
void AddLiveOutRegInfo(unsigned Reg, unsigned NumSignBits, const APInt &KnownZero, const APInt &KnownOne)
AddLiveOutRegInfo - Adds LiveOutInfo for a register.
This file implements a class to represent arbitrary precision integral constant values and operations...
int getArgumentFrameIndex(const Argument *A)
getArgumentFrameIndex - Get frame index for the byval argument.
bool count(const KeyT &Val) const
count - Return true if the specified key is in the map.
const LiveOutInfo * GetLiveOutRegInfo(unsigned Reg)
iterator find(const KeyT &Val)
void AddLandingPadInfo(const LandingPadInst &I, MachineModuleInfo &MMI, MachineBasicBlock *MBB)
bundle_iterator< MachineInstr, instr_iterator > iterator
SmallPtrSet< const Instruction *, 8 > CatchInfoLost
std::vector< std::pair< MachineInstr *, unsigned > > PHINodesToUpdate
unsigned ExceptionPointerVirtReg
SmallPtrSet< const BasicBlock *, 4 > VisitedBBs
void ComputePHILiveOutRegInfo(const PHINode *)
MachineBasicBlock * MBB
MBB - The current block.
DenseMap< unsigned, unsigned > RegFixups
RegFixups - Registers which need to be replaced after isel is done.
SmallVector< MachineInstr *, 8 > ArgDbgValues
unsigned CreateRegs(Type *Ty)
Class for arbitrary precision integers.
BranchProbabilityInfo * BPI
void set(const Function &Fn, MachineFunction &MF)
unsigned ExceptionSelectorVirtReg
Analysis pass providing branch probability information.
MachineRegisterInfo * RegInfo
DenseMap< const Argument *, int > ByValArgFrameIndexMap
ByValArgFrameIndexMap - Keep track of frame indices for byval arguments.
MachineBasicBlock::iterator InsertPt
MBB - The current insert position inside the current block.
unsigned CreateReg(MVT VT)
CreateReg - Allocate a single virtual register for the given type.
DenseMap< const AllocaInst *, int > StaticAllocaMap
FunctionLoweringInfo(const TargetMachine &TM)
void InvalidatePHILiveOutRegInfo(const PHINode *PN)
LLVM Value Representation.
void AddCatchInfo(const CallInst &I, MachineModuleInfo *MMI, MachineBasicBlock *MBB)
DenseMap< const BasicBlock *, MachineBasicBlock * > MBBMap
MBBMap - A mapping from LLVM basic blocks to their machine code entry.
void setArgumentFrameIndex(const Argument *A, int FI)
void ComputeUsesVAFloatArgument(const CallInst &I, MachineModuleInfo *MMI)
DenseMap< const Value *, unsigned > ValueMap
bool isExportedInst(const Value *V)
unsigned InitializeRegForValue(const Value *V)