diff options
| author | Roman Divacky <rdivacky@FreeBSD.org> | 2009-12-01 11:07:05 +0000 | 
|---|---|---|
| committer | Roman Divacky <rdivacky@FreeBSD.org> | 2009-12-01 11:07:05 +0000 | 
| commit | 06f9d4012fb8acea3e9861d5722b5965dbb724d9 (patch) | |
| tree | ffe0478472eaa0686f11cb02c6df7d257b8719b0 /lib/CodeGen/AsmPrinter/DwarfException.cpp | |
| parent | 76e2e0ebfdd3d91b07a75822865ea3e9121a99ce (diff) | |
Notes
Diffstat (limited to 'lib/CodeGen/AsmPrinter/DwarfException.cpp')
| -rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfException.cpp | 35 | 
1 files changed, 6 insertions, 29 deletions
| diff --git a/lib/CodeGen/AsmPrinter/DwarfException.cpp b/lib/CodeGen/AsmPrinter/DwarfException.cpp index fcdcfd31bc3e..1c8b8f464720 100644 --- a/lib/CodeGen/AsmPrinter/DwarfException.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfException.cpp @@ -727,8 +727,7 @@ void DwarfException::EmitExceptionTable() {      // somewhere.  This predicate should be moved to a shared location that is      // in target-independent code.      // -    if ((LSDASection->getKind().isWriteable() && -         !LSDASection->getKind().isReadOnlyWithRel()) || +    if (LSDASection->getKind().isWriteable() ||          Asm->TM.getRelocationModel() == Reloc::Static)        TTypeFormat = dwarf::DW_EH_PE_absptr;      else @@ -918,36 +917,14 @@ void DwarfException::EmitExceptionTable() {    }    // Emit the Catch TypeInfos. -  const TargetLoweringObjectFile &TLOF = Asm->getObjFileLowering(); -  unsigned Index = 1; -    for (std::vector<GlobalVariable *>::const_reverse_iterator           I = TypeInfos.rbegin(), E = TypeInfos.rend(); I != E; ++I) { -    const GlobalVariable *TI = *I; - -    if (TI) { -      if (!LSDASection->getKind().isReadOnlyWithRel() && -          (TTypeFormat == dwarf::DW_EH_PE_absptr || -           TI->getLinkage() == GlobalValue::InternalLinkage)) { -        // Print out the unadorned name of the type info. -        PrintRelDirective(); -        O << Asm->Mang->getMangledName(TI); -      } else { -        bool IsTypeInfoIndirect = false, IsTypeInfoPCRel = false; -        const MCExpr *TypeInfoRef = -          TLOF.getSymbolForDwarfGlobalReference(TI, Asm->Mang, Asm->MMI, -                                                IsTypeInfoIndirect, -                                                IsTypeInfoPCRel); - -        if (!IsTypeInfoPCRel) -          TypeInfoRef = CreateLabelDiff(TypeInfoRef, "typeinforef_addr", -                                        Index++); - -        O << MAI->getData32bitsDirective(); -        TypeInfoRef->print(O, MAI); -      } +    const GlobalVariable *GV = *I; +    PrintRelDirective(); + +    if (GV) { +      O << Asm->Mang->getMangledName(GV);      } else { -      PrintRelDirective();        O << "0x0";      } | 
