diff options
Diffstat (limited to 'llvm/lib/Target/TargetAsmInfo.cpp')
| -rw-r--r-- | llvm/lib/Target/TargetAsmInfo.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/llvm/lib/Target/TargetAsmInfo.cpp b/llvm/lib/Target/TargetAsmInfo.cpp index 923cac6640c..6967ebe4860 100644 --- a/llvm/lib/Target/TargetAsmInfo.cpp +++ b/llvm/lib/Target/TargetAsmInfo.cpp @@ -266,3 +266,26 @@ TargetAsmInfo::SectionForGlobal(const GlobalValue *GV) const { return getDataSection(); } + +std::string +TargetAsmInfo::UniqueSectionForGlobal(const GlobalValue* GV, + SectionKind::Kind kind) const { + switch (kind) { + case SectionKind::Text: + return ".llvm.linkonce.t." + GV->getName(); + case SectionKind::Data: + return ".llvm.linkonce.d." + GV->getName(); + case SectionKind::BSS: + return ".llvm.linkonce.b." + GV->getName(); + case SectionKind::ROData: + case SectionKind::RODataMergeConst: + case SectionKind::RODataMergeStr: + return ".llvm.linkonce.r." + GV->getName(); + case SectionKind::ThreadData: + return ".llvm.linkonce.td." + GV->getName(); + case SectionKind::ThreadBSS: + return ".llvm.linkonce.tb." + GV->getName(); + default: + assert(0 && "Unknown section kind"); + } +} |

