diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-05-10 21:04:45 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-05-10 21:04:45 +0000 |
commit | 6253c7ca60e3e5c9b10743721b921aa34307d625 (patch) | |
tree | 0ee18cce07f5681981d16aa44e659c81cb1f6040 | |
parent | e3a0e987f3d4f07512cdb64b9034369f966cb448 (diff) | |
download | external_llvm-6253c7ca60e3e5c9b10743721b921aa34307d625.tar.gz external_llvm-6253c7ca60e3e5c9b10743721b921aa34307d625.tar.bz2 external_llvm-6253c7ca60e3e5c9b10743721b921aa34307d625.zip |
Produce a __debug_frame section on darwin ARM when appropriate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131151 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 12 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/CMakeLists.txt | 1 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfException.h | 20 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfSjLjException.cpp | 46 | ||||
-rw-r--r-- | test/CodeGen/ARM/debug-info-sreg2.ll | 4 |
5 files changed, 8 insertions, 75 deletions
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 7f39cef3f9..5a91341097 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -193,8 +193,6 @@ bool AsmPrinter::doInitialization(Module &M) { case ExceptionHandling::None: return false; case ExceptionHandling::SjLj: - DE = new DwarfSjLjException(this); - return false; case ExceptionHandling::DwarfCFI: DE = new DwarfCFIException(this); return false; @@ -593,11 +591,13 @@ static bool EmitDebugValueComment(const MachineInstr *MI, AsmPrinter &AP) { } AsmPrinter::CFIMoveType AsmPrinter::needsCFIMoves() { - if (UnwindTablesMandatory) - return CFI_M_EH; + if (MAI->getExceptionHandlingType() == ExceptionHandling::DwarfCFI) { + if (UnwindTablesMandatory) + return CFI_M_EH; - if (!MF->getFunction()->doesNotThrow()) - return CFI_M_EH; + if (!MF->getFunction()->doesNotThrow()) + return CFI_M_EH; + } if (MMI->hasDebugInfo()) return CFI_M_Debug; diff --git a/lib/CodeGen/AsmPrinter/CMakeLists.txt b/lib/CodeGen/AsmPrinter/CMakeLists.txt index bf5ef2878c..554b47c89c 100644 --- a/lib/CodeGen/AsmPrinter/CMakeLists.txt +++ b/lib/CodeGen/AsmPrinter/CMakeLists.txt @@ -8,7 +8,6 @@ add_llvm_library(LLVMAsmPrinter DwarfCompileUnit.cpp DwarfDebug.cpp DwarfException.cpp - DwarfSjLjException.cpp OcamlGCPrinter.cpp ) diff --git a/lib/CodeGen/AsmPrinter/DwarfException.h b/lib/CodeGen/AsmPrinter/DwarfException.h index 68079bb655..42a3658fff 100644 --- a/lib/CodeGen/AsmPrinter/DwarfException.h +++ b/lib/CodeGen/AsmPrinter/DwarfException.h @@ -174,26 +174,6 @@ public: virtual void EndFunction(); }; -class DwarfSjLjException : public DwarfException { -public: - //===--------------------------------------------------------------------===// - // Main entry points. - // - DwarfSjLjException(AsmPrinter *A); - virtual ~DwarfSjLjException(); - - /// EndModule - Emit all exception information that should come after the - /// content. - virtual void EndModule(); - - /// BeginFunction - Gather pre-function exception information. Assumes being - /// emitted immediately after the function entry point. - virtual void BeginFunction(const MachineFunction *MF); - - /// EndFunction - Gather and emit post-function exception information. - virtual void EndFunction(); -}; - class ARMException : public DwarfException { /// shouldEmitTable - Per-function flag to indicate if EH tables should /// be emitted. diff --git a/lib/CodeGen/AsmPrinter/DwarfSjLjException.cpp b/lib/CodeGen/AsmPrinter/DwarfSjLjException.cpp deleted file mode 100644 index e8b8824b0b..0000000000 --- a/lib/CodeGen/AsmPrinter/DwarfSjLjException.cpp +++ /dev/null @@ -1,46 +0,0 @@ -//===-- CodeGen/AsmPrinter/DwarfSjLjException.cpp - Dwarf Exception Impl --==// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file is a simple implementation of DwarfException that just produces -// the exception table for use with SjLj. -// -//===----------------------------------------------------------------------===// - -#include "DwarfException.h" -#include "llvm/CodeGen/MachineLocation.h" -#include "llvm/CodeGen/MachineModuleInfo.h" -using namespace llvm; - -DwarfSjLjException::DwarfSjLjException(AsmPrinter *A) : DwarfException(A) { -} - -DwarfSjLjException::~DwarfSjLjException() {} - -/// EndModule - Emit all exception information that should come after the -/// content. -void DwarfSjLjException::EndModule() { -} - -/// BeginFunction - Gather pre-function exception information. Assumes it's -/// being emitted immediately after the function entry point. -void DwarfSjLjException::BeginFunction(const MachineFunction *MF) { -} - -/// EndFunction - Gather and emit post-function exception information. -/// -void DwarfSjLjException::EndFunction() { - // Record if this personality index uses a landing pad. - bool HasLandingPad = !MMI->getLandingPads().empty(); - - // Map all labels and get rid of any dead landing pads. - MMI->TidyLandingPads(); - - if (HasLandingPad) - EmitExceptionTable(); -} diff --git a/test/CodeGen/ARM/debug-info-sreg2.ll b/test/CodeGen/ARM/debug-info-sreg2.ll index 86abc6e37e..fe39977f25 100644 --- a/test/CodeGen/ARM/debug-info-sreg2.ll +++ b/test/CodeGen/ARM/debug-info-sreg2.ll @@ -4,8 +4,8 @@ target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32- target triple = "thumbv7-apple-macosx10.6.7" ;CHECK: Ldebug_loc0: -;CHECK-NEXT: .long Ltmp0 -;CHECK-NEXT: .long Ltmp2 +;CHECK-NEXT: .long Ltmp1 +;CHECK-NEXT: .long Ltmp3 ;CHECK-NEXT: .short 6 @ Loc expr size ;CHECK-NEXT: .byte 144 @ DW_OP_regx for S register |