From c7d230f7361bc451e95b15895c822c6ad275cd83 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Thu, 27 Aug 2009 03:29:26 +0000 Subject: --- Reverse-merging r80147 into '.': A include/llvm/ADT/iterator.cmake U autoconf/configure.ac --- Reverse-merging r80161 into '.': U cmake/config-ix.cmake --- Reverse-merging r80171 into '.': U Makefile --- Reverse-merging r80173 into '.': U configure U include/llvm/Config/config.h.in --- Reverse-merging r80180 into '.': A include/llvm/ADT/iterator.h.in Despite common miscomceptions, iterator.h is alive and well. It broke the build bots for several hours. And yet no one bothered to look at them. Gabor and Doug, please review your changes and make sure that they actually build before resubmitting them. llvm-svn: 80197 --- llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp | 69 +++++++++++++++----------- 1 file changed, 41 insertions(+), 28 deletions(-) (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp') diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp index 170ca241b6a..761686a4dd3 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp @@ -7,7 +7,7 @@ // //===----------------------------------------------------------------------===// // -// This file contains support for writing dwarf exception info into asm files. +// This file contains support for writing DWARF exception info into asm files. // //===----------------------------------------------------------------------===// @@ -98,16 +98,19 @@ void DwarfException::EmitCIE(const Function *Personality, unsigned Index) { // If there is a personality, we need to indicate the function's location. if (Personality) { + unsigned Encoding = 0; Asm->EmitULEB128Bytes(7); Asm->EOL("Augmentation Size"); if (MAI->getNeedsIndirectEncoding()) { - Asm->EmitInt8(dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4 | - dwarf::DW_EH_PE_indirect); - Asm->EOL("Personality (pcrel sdata4 indirect)"); + Encoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4 | + dwarf::DW_EH_PE_indirect; + Asm->EmitInt8(Encoding); + Asm->EOL("Personality", Encoding); } else { - Asm->EmitInt8(dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4); - Asm->EOL("Personality (pcrel sdata4)"); + Encoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4; + Asm->EmitInt8(Encoding); + Asm->EOL("Personality", Encoding); } PrintRelDirective(true); @@ -118,17 +121,20 @@ void DwarfException::EmitCIE(const Function *Personality, unsigned Index) { O << "-" << MAI->getPCSymbol(); Asm->EOL("Personality"); - Asm->EmitInt8(dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4); - Asm->EOL("LSDA Encoding (pcrel sdata4)"); + Encoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4; + Asm->EmitInt8(Encoding); + Asm->EOL("LSDA Encoding", Encoding); - Asm->EmitInt8(dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4); - Asm->EOL("FDE Encoding (pcrel sdata4)"); + Encoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4; + Asm->EmitInt8(Encoding); + Asm->EOL("FDE Encoding", Encoding); } else { Asm->EmitULEB128Bytes(1); Asm->EOL("Augmentation Size"); - Asm->EmitInt8(dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4); - Asm->EOL("FDE Encoding (pcrel sdata4)"); + unsigned Encoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4; + Asm->EmitInt8(Encoding); + Asm->EOL("FDE Encoding", Encoding); } // Indicate locations of general callee saved registers in frame. @@ -598,15 +604,17 @@ void DwarfException::EmitExceptionTable() { } // Emit the header. - Asm->EmitInt8(dwarf::DW_EH_PE_omit); - Asm->EOL("@LPStart format (DW_EH_PE_omit)"); + unsigned Encoding = dwarf::DW_EH_PE_omit; + Asm->EmitInt8(Encoding); + Asm->EOL("@LPStart format", Encoding); #if 0 if (TypeInfos.empty() && FilterIds.empty()) { // If there are no typeinfos or filters, there is nothing to emit, optimize // by specifying the "omit" encoding. - Asm->EmitInt8(dwarf::DW_EH_PE_omit); - Asm->EOL("@TType format (DW_EH_PE_omit)"); + Encoding = dwarf::DW_EH_PE_omit; + Asm->EmitInt8(Encoding); + Asm->EOL("@TType format", Encoding); } else { // Okay, we have actual filters or typeinfos to emit. As such, we need to // pick a type encoding for them. We're about to emit a list of pointers to @@ -634,12 +642,13 @@ void DwarfException::EmitExceptionTable() { // if (LSDASection->isWritable() || Asm->TM.getRelocationModel() == Reloc::Static) { - Asm->EmitInt8(DW_EH_PE_absptr); - Asm->EOL("TType format (DW_EH_PE_absptr)"); + Encoding = DW_EH_PE_absptr; + Asm->EmitInt8(Encoding); + Asm->EOL("TType format", Encoding); } else { + Encoding = DW_EH_PE_pcrel | DW_EH_PE_indirect | DW_EH_PE_sdata4; Asm->EmitInt8(DW_EH_PE_pcrel | DW_EH_PE_indirect | DW_EH_PE_sdata4); - Asm->EOL("TType format (DW_EH_PE_pcrel | DW_EH_PE_indirect" - " | DW_EH_PE_sdata4)"); + Asm->EOL("TType format", Encoding); } Asm->EmitULEB128Bytes(TypeOffset); Asm->EOL("TType base offset"); @@ -649,11 +658,13 @@ void DwarfException::EmitExceptionTable() { // say that we're omitting that bit. // FIXME: does this apply to Dwarf also? The above #if 0 implies yes? if (!HaveTTData) { - Asm->EmitInt8(dwarf::DW_EH_PE_omit); - Asm->EOL("@TType format (DW_EH_PE_omit)"); + Encoding = dwarf::DW_EH_PE_omit; + Asm->EmitInt8(Encoding); + Asm->EOL("@TType format", Encoding); } else { - Asm->EmitInt8(dwarf::DW_EH_PE_absptr); - Asm->EOL("@TType format (DW_EH_PE_absptr)"); + Encoding = dwarf::DW_EH_PE_absptr; + Asm->EmitInt8(Encoding); + Asm->EOL("@TType format", Encoding); Asm->EmitULEB128Bytes(TypeOffset); Asm->EOL("@TType base offset"); } @@ -661,8 +672,9 @@ void DwarfException::EmitExceptionTable() { // SjLj Exception handilng if (MAI->getExceptionHandlingType() == ExceptionHandling::SjLj) { - Asm->EmitInt8(dwarf::DW_EH_PE_udata4); - Asm->EOL("Call site format (DW_EH_PE_udata4)"); + Encoding = dwarf::DW_EH_PE_udata4; + Asm->EmitInt8(Encoding); + Asm->EOL("Call site format", Encoding); Asm->EmitULEB128Bytes(SizeSites); Asm->EOL("Call site table length"); @@ -714,8 +726,9 @@ void DwarfException::EmitExceptionTable() { // will call `terminate()'. // Emit the landing pad call site table. - Asm->EmitInt8(dwarf::DW_EH_PE_udata4); - Asm->EOL("Call site format (DW_EH_PE_udata4)"); + Encoding = dwarf::DW_EH_PE_udata4; + Asm->EmitInt8(Encoding); + Asm->EOL("Call site format", Encoding); Asm->EmitULEB128Bytes(SizeSites); Asm->EOL("Call site table size"); -- cgit v1.2.3