Move the compact encoding from the target-specific library to the code-gen

library.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135443 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bill Wendling
2011-07-18 23:38:40 +00:00
parent 565a036697
commit a67dcea072
2 changed files with 13 additions and 3 deletions

View File

@ -111,6 +111,10 @@ class MachineModuleInfo : public ImmutablePass {
// frame maps by debug and exception handling consumers. // frame maps by debug and exception handling consumers.
std::vector<MachineMove> FrameMoves; std::vector<MachineMove> FrameMoves;
// CompactEncoding - If the target supports it, this is the compact unwind
// encoding. It replaces a function's CIE and FDE.
uint32_t CompactEncoding;
// LandingPads - List of LandingPadInfo describing the landing pad information // LandingPads - List of LandingPadInfo describing the landing pad information
// in the current function. // in the current function.
std::vector<LandingPadInfo> LandingPads; std::vector<LandingPadInfo> LandingPads;
@ -230,6 +234,11 @@ public:
/// handling comsumers. /// handling comsumers.
std::vector<MachineMove> &getFrameMoves() { return FrameMoves; } std::vector<MachineMove> &getFrameMoves() { return FrameMoves; }
/// getCompactEncoding - Returns the compact unwind encoding for a function if
/// the target supports the encoding. This encoding replaces a function's CIE
/// and FDE.
uint32_t getCompactEncoding() const { return CompactEncoding; }
/// getAddrLabelSymbol - Return the symbol to be used for the specified basic /// getAddrLabelSymbol - Return the symbol to be used for the specified basic
/// block when its address is taken. This cannot be its normal LBB label /// block when its address is taken. This cannot be its normal LBB label
/// because the block may be accessed outside its containing function. /// because the block may be accessed outside its containing function.

View File

@ -257,9 +257,9 @@ MachineModuleInfo::MachineModuleInfo(const MCAsmInfo &MAI,
const MCRegisterInfo &MRI, const MCRegisterInfo &MRI,
const TargetAsmInfo *TAI) const TargetAsmInfo *TAI)
: ImmutablePass(ID), Context(MAI, MRI, TAI), : ImmutablePass(ID), Context(MAI, MRI, TAI),
ObjFileMMI(0), ObjFileMMI(0), CompactEncoding(0), CurCallSite(0), CallsEHReturn(0),
CurCallSite(0), CallsEHReturn(0), CallsUnwindInit(0), DbgInfoAvailable(false), CallsUnwindInit(0), DbgInfoAvailable(false),
CallsExternalVAFunctionWithFloatingPointArguments(false) { CallsExternalVAFunctionWithFloatingPointArguments(false) {
initializeMachineModuleInfoPass(*PassRegistry::getPassRegistry()); initializeMachineModuleInfoPass(*PassRegistry::getPassRegistry());
// Always emit some info, by default "no personality" info. // Always emit some info, by default "no personality" info.
Personalities.push_back(NULL); Personalities.push_back(NULL);
@ -312,6 +312,7 @@ void MachineModuleInfo::EndFunction() {
FilterEnds.clear(); FilterEnds.clear();
CallsEHReturn = 0; CallsEHReturn = 0;
CallsUnwindInit = 0; CallsUnwindInit = 0;
CompactEncoding = 0;
VariableDbgInfo.clear(); VariableDbgInfo.clear();
} }