diff options
author | Chris Lattner <sabre@nondot.org> | 2009-06-24 18:17:00 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-06-24 18:17:00 +0000 |
commit | 381d4fef6fc5c93ed1e1a808a59f5b6af49b8b07 (patch) | |
tree | d34cc75f0c1f5826ad400dc8d82604aa5ebcbae4 | |
parent | 7af485e109391cbbf1cb95dcccc9074f262107ff (diff) |
simplify personality function stub printing to use the mangler and
decorateName like other stuff instead of special casing _. Also, stick
it into GVStubs and let the normal stub printer print the stub instead
of doing it manually.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74090 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp index 4ce8dcd9df..30993d48c6 100644 --- a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp +++ b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp @@ -1134,9 +1134,8 @@ bool X86ATTAsmPrinter::doFinalization(Module &M) { i != e; ++i) O << "\t.ascii \" -export:" << i->getKeyData() << ",data\"\n"; - if (!DLLExportedFns.empty()) { + if (!DLLExportedFns.empty()) SwitchToDataSection(".section .drectve"); - } for (StringSet<>::iterator i = DLLExportedFns.begin(), e = DLLExportedFns.end(); @@ -1162,20 +1161,21 @@ bool X86ATTAsmPrinter::doFinalization(Module &M) { // Print global value stubs. bool InStubSection = false; + // Add the (possibly multiple) personalities to the set of global value + // stubs. Only referenced functions get into the Personalities list. if (TAI->doesSupportExceptionHandling() && MMI && !Subtarget->is64Bit()) { - // Add the (possibly multiple) personalities to the set of global values. - // Only referenced functions get into the Personalities list. - const std::vector<Function *>& Personalities = MMI->getPersonalities(); - for (std::vector<Function *>::const_iterator I = Personalities.begin(), - E = Personalities.end(); I != E; ++I) { - if (!*I) + const std::vector<Function*> &Personalities = MMI->getPersonalities(); + for (unsigned i = 0, e = Personalities.size(); i != e; ++i) { + if (Personalities[i] == 0) continue; if (!InStubSection) { SwitchToDataSection( "\t.section __IMPORT,__pointers,non_lazy_symbol_pointers"); InStubSection = true; } - printGVStub((*I)->getNameStart(), "_"); + std::string Name = Mang->getValueName(Personalities[i]); + decorateName(Name, Personalities[i]); + GVStubs.insert(Name); } } |