From a67dcea0721c02ef543618f0d3b5014ffb3efc8f Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Mon, 18 Jul 2011 23:38:40 +0000 Subject: [PATCH] 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 --- include/llvm/CodeGen/MachineModuleInfo.h | 9 +++++++++ lib/CodeGen/MachineModuleInfo.cpp | 7 ++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/include/llvm/CodeGen/MachineModuleInfo.h b/include/llvm/CodeGen/MachineModuleInfo.h index 33d5ffd9c36..96f82599161 100644 --- a/include/llvm/CodeGen/MachineModuleInfo.h +++ b/include/llvm/CodeGen/MachineModuleInfo.h @@ -111,6 +111,10 @@ class MachineModuleInfo : public ImmutablePass { // frame maps by debug and exception handling consumers. std::vector 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 // in the current function. std::vector LandingPads; @@ -230,6 +234,11 @@ public: /// handling comsumers. std::vector &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 /// block when its address is taken. This cannot be its normal LBB label /// because the block may be accessed outside its containing function. diff --git a/lib/CodeGen/MachineModuleInfo.cpp b/lib/CodeGen/MachineModuleInfo.cpp index 2b1c385c1fd..652d2078ce2 100644 --- a/lib/CodeGen/MachineModuleInfo.cpp +++ b/lib/CodeGen/MachineModuleInfo.cpp @@ -257,9 +257,9 @@ MachineModuleInfo::MachineModuleInfo(const MCAsmInfo &MAI, const MCRegisterInfo &MRI, const TargetAsmInfo *TAI) : ImmutablePass(ID), Context(MAI, MRI, TAI), - ObjFileMMI(0), - CurCallSite(0), CallsEHReturn(0), CallsUnwindInit(0), DbgInfoAvailable(false), - CallsExternalVAFunctionWithFloatingPointArguments(false) { + ObjFileMMI(0), CompactEncoding(0), CurCallSite(0), CallsEHReturn(0), + CallsUnwindInit(0), DbgInfoAvailable(false), + CallsExternalVAFunctionWithFloatingPointArguments(false) { initializeMachineModuleInfoPass(*PassRegistry::getPassRegistry()); // Always emit some info, by default "no personality" info. Personalities.push_back(NULL); @@ -312,6 +312,7 @@ void MachineModuleInfo::EndFunction() { FilterEnds.clear(); CallsEHReturn = 0; CallsUnwindInit = 0; + CompactEncoding = 0; VariableDbgInfo.clear(); }