diff options
| author | Jim Laskey <jlaskey@mac.com> | 2006-10-17 13:41:07 +0000 |
|---|---|---|
| committer | Jim Laskey <jlaskey@mac.com> | 2006-10-17 13:41:07 +0000 |
| commit | 7126254a0e1cb8eefa6c25498347481cbfa6b2fd (patch) | |
| tree | f0f92402919e1aa16c4e48c184417e12b5b8afc6 | |
| parent | 418c8e69bb20311c9e594c31e8d05e4dccddb758 (diff) | |
| download | bcm5719-llvm-7126254a0e1cb8eefa6c25498347481cbfa6b2fd.tar.gz bcm5719-llvm-7126254a0e1cb8eefa6c25498347481cbfa6b2fd.zip | |
Basic support for getGlobalLinkName.
llvm-svn: 30997
| -rw-r--r-- | llvm/include/llvm/CodeGen/AsmPrinter.h | 9 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter.cpp | 10 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/DwarfWriter.cpp | 4 |
3 files changed, 20 insertions, 3 deletions
diff --git a/llvm/include/llvm/CodeGen/AsmPrinter.h b/llvm/include/llvm/CodeGen/AsmPrinter.h index 3632cc40714..8f73ce7f6c8 100644 --- a/llvm/include/llvm/CodeGen/AsmPrinter.h +++ b/llvm/include/llvm/CodeGen/AsmPrinter.h @@ -99,6 +99,13 @@ namespace llvm { /// specified global, returned in log form. This includes an explicitly /// requested alignment (if the global has one). unsigned getPreferredAlignmentLog(const GlobalVariable *GV) const; + + /// getGlobalLinkName - Returns the asm/link name of of the specified + /// global variable. Should be overridden by each target asm printer to + /// generate the appropriate value. + virtual void getGlobalLinkName(const GlobalVariable *GV, + std::string &LinkName); + protected: /// doInitialization - Set up the AsmPrinter when we are working on a new /// module. If your pass overrides this, it must make sure to explicitly @@ -167,7 +174,7 @@ namespace llvm { /// special global used by LLVM. If so, emit it and return true, otherwise /// do nothing and return false. bool EmitSpecialLLVMGlobal(const GlobalVariable *GV); - + /// EmitAlignment - Emit an alignment directive to the specified power of /// two boundary. For example, if you pass in 3 here, you will get an 8 /// byte alignment. If a global value is specified, and if that global has diff --git a/llvm/lib/CodeGen/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter.cpp index 9f5447fa5fd..e9542fc6c13 100644 --- a/llvm/lib/CodeGen/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter.cpp @@ -349,6 +349,16 @@ unsigned AsmPrinter::getPreferredAlignmentLog(const GlobalVariable *GV) const { return Alignment; } +/// getGlobalLinkName - Returns the asm/link name of of the specified +/// global variable. Should be overridden by each target asm printer to +/// generate the appropriate value. +void AsmPrinter::getGlobalLinkName(const GlobalVariable *GV, + std::string &LinkName) { + // Default action is to use a global symbol. + LinkName = TAI->getGlobalPrefix(); + LinkName += GV->getName(); +} + // EmitAlignment - Emit an alignment directive to the specified power of two. void AsmPrinter::EmitAlignment(unsigned NumBits, const GlobalValue *GV) const { if (GV && GV->getAlignment()) diff --git a/llvm/lib/CodeGen/DwarfWriter.cpp b/llvm/lib/CodeGen/DwarfWriter.cpp index 8fe8b4e7627..1c52c5bf5d1 100644 --- a/llvm/lib/CodeGen/DwarfWriter.cpp +++ b/llvm/lib/CodeGen/DwarfWriter.cpp @@ -1634,8 +1634,8 @@ DIE *DwarfWriter::NewGlobalVariable(GlobalVariableDesc *GVD) { AddSourceLine(VariableDie, UnitDesc, GVD->getLine()); // Work up linkage name. - std::string LinkageName(TAI->getGlobalPrefix()); - LinkageName += GV->getName(); + std::string LinkageName; + Asm->getGlobalLinkName(GV, LinkageName); // Add address. DIEBlock *Block = new DIEBlock(); |

