X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FX86%2FAsmPrinter%2FX86IntelAsmPrinter.cpp;h=1a40ed46478789c42c08fb401fab161c9b01fd64;hb=481d15a12289ec4d058b863da93794fd8be1e702;hp=9d4df93c1b4686c319c6fa6b42382e03b5542245;hpb=20c568f366be211323eeaf0e45ef053278ec9ddc;p=oota-llvm.git diff --git a/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp b/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp index 9d4df93c1b4..1a40ed46478 100644 --- a/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp +++ b/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp @@ -26,6 +26,7 @@ #include "llvm/ADT/StringExtras.h" #include "llvm/Assembly/Writer.h" #include "llvm/CodeGen/DwarfWriter.h" +#include "llvm/Support/ErrorHandling.h" #include "llvm/Support/Mangler.h" #include "llvm/Target/TargetAsmInfo.h" #include "llvm/Target/TargetOptions.h" @@ -114,7 +115,7 @@ void X86IntelAsmPrinter::decorateName(std::string &Name, break; default: - assert(0 && "Unsupported DecorationStyle"); + LLVM_UNREACHABLE("Unsupported DecorationStyle"); } } @@ -143,7 +144,7 @@ bool X86IntelAsmPrinter::runOnMachineFunction(MachineFunction &MF) { SwitchToTextSection("_text", F); switch (F->getLinkage()) { - default: assert(0 && "Unsupported linkage type!"); + default: LLVM_UNREACHABLE("Unsupported linkage type!"); case Function::PrivateLinkage: case Function::InternalLinkage: EmitAlignment(FnAlign); @@ -239,16 +240,17 @@ void X86IntelAsmPrinter::printOp(const MachineOperand &MO, case MachineOperand::MO_GlobalAddress: { bool isMemOp = Modifier && !strcmp(Modifier, "mem"); GlobalValue *GV = MO.getGlobal(); - std::string Name = Mang->getValueName(GV); - + std::string Name = Mang->getMangledName(GV); decorateName(Name, GV); if (!isMemOp) O << "OFFSET "; - if (GV->hasDLLImportLinkage()) { - // FIXME: This should be fixed with full support of stdcall & fastcall - // CC's + + // Handle dllimport linkage. + // FIXME: This should be fixed with full support of stdcall & fastcall + // CC's + if (MO.getTargetFlags() == X86II::MO_DLLIMPORT) O << "__imp_"; - } + O << Name; printOffset(MO.getOffset()); return; @@ -265,7 +267,7 @@ void X86IntelAsmPrinter::printOp(const MachineOperand &MO, void X86IntelAsmPrinter::print_pcrel_imm(const MachineInstr *MI, unsigned OpNo){ const MachineOperand &MO = MI->getOperand(OpNo); switch (MO.getType()) { - default: assert(0 && "Unknown pcrel immediate operand"); + default: LLVM_UNREACHABLE("Unknown pcrel immediate operand"); case MachineOperand::MO_Immediate: O << MO.getImm(); return; @@ -275,14 +277,14 @@ void X86IntelAsmPrinter::print_pcrel_imm(const MachineInstr *MI, unsigned OpNo){ case MachineOperand::MO_GlobalAddress: { GlobalValue *GV = MO.getGlobal(); - std::string Name = Mang->getValueName(GV); + std::string Name = Mang->getMangledName(GV); decorateName(Name, GV); - if (GV->hasDLLImportLinkage()) { - // FIXME: This should be fixed with full support of stdcall & fastcall - // CC's + // Handle dllimport linkage. + // FIXME: This should be fixed with full support of stdcall & fastcall + // CC's + if (MO.getTargetFlags() == X86II::MO_DLLIMPORT) O << "__imp_"; - } O << Name; printOffset(MO.getOffset()); return; @@ -443,7 +445,7 @@ bool X86IntelAsmPrinter::doInitialization(Module &M) { // Emit declarations for external functions. for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) if (I->isDeclaration()) { - std::string Name = Mang->getValueName(I); + std::string Name = Mang->getMangledName(I); decorateName(Name, I); O << "\tEXTERN " ; @@ -458,7 +460,7 @@ bool X86IntelAsmPrinter::doInitialization(Module &M) { for (Module::const_global_iterator I = M.global_begin(), E = M.global_end(); I != E; ++I) { if (I->isDeclaration()) { - std::string Name = Mang->getValueName(I); + std::string Name = Mang->getMangledName(I); O << "\tEXTERN " ; if (I->hasDLLImportLinkage()) { @@ -483,7 +485,7 @@ bool X86IntelAsmPrinter::doFinalization(Module &M) { if (EmitSpecialLLVMGlobal(I)) continue; - std::string name = Mang->getValueName(I); + std::string name = Mang->getMangledName(I); Constant *C = I->getInitializer(); unsigned Align = TD->getPreferredAlignmentLog(I); bool bCustomSegment = false; @@ -517,7 +519,7 @@ bool X86IntelAsmPrinter::doFinalization(Module &M) { SwitchToSection(TAI->getDataSection()); break; default: - assert(0 && "Unknown linkage type!"); + LLVM_UNREACHABLE("Unknown linkage type!"); } if (!bCustomSegment)