diff options
| author | Anton Korobeynikov <asl@math.spbu.ru> | 2008-07-09 13:20:07 +0000 |
|---|---|---|
| committer | Anton Korobeynikov <asl@math.spbu.ru> | 2008-07-09 13:20:07 +0000 |
| commit | 2633a040a3bac5482e2b530de3505b54996ad961 (patch) | |
| tree | 8bf47a195273ce79056a76d2da265beb225c1368 /llvm/lib | |
| parent | ab778022d5be8eab54e76ded3f20bba7ad9be2d4 (diff) | |
| download | bcm5719-llvm-2633a040a3bac5482e2b530de3505b54996ad961.tar.gz bcm5719-llvm-2633a040a3bac5482e2b530de3505b54996ad961.zip | |
Move flag decoding stuff into special hook
llvm-svn: 53297
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86TargetAsmInfo.cpp | 41 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86TargetAsmInfo.h | 1 |
2 files changed, 25 insertions, 17 deletions
diff --git a/llvm/lib/Target/X86/X86TargetAsmInfo.cpp b/llvm/lib/Target/X86/X86TargetAsmInfo.cpp index 80156c79c03..b34f2d19e39 100644 --- a/llvm/lib/Target/X86/X86TargetAsmInfo.cpp +++ b/llvm/lib/Target/X86/X86TargetAsmInfo.cpp @@ -411,7 +411,6 @@ std::string X86TargetAsmInfo::UniqueSectionForGlobal(const GlobalValue* GV, std::string X86TargetAsmInfo::SectionForGlobal(const GlobalValue *GV) const { - const X86Subtarget *Subtarget = &X86TM->getSubtarget<X86Subtarget>(); SectionKind::Kind kind = SectionKindForGlobal(GV); unsigned flags = SectionFlagsForGlobal(GV, GV->getSection().c_str()); std::string Name; @@ -471,44 +470,53 @@ std::string X86TargetAsmInfo::SectionForGlobal(const GlobalValue *GV) const { assert(0 && "Unsupported global"); } + Name += PrintSectionFlags(flags); + return Name; +} + +std::string X86TargetAsmInfo::PrintSectionFlags(unsigned flags) const { + const X86Subtarget *Subtarget = &X86TM->getSubtarget<X86Subtarget>(); + + std::string Flags = ""; + // Add all special flags, etc switch (Subtarget->TargetType) { case X86Subtarget::isELF: - Name += ",\""; + Flags += ",\""; if (!(flags & SectionFlags::Debug)) - Name += 'a'; + Flags += 'a'; if (flags & SectionFlags::Code) - Name += 'x'; + Flags += 'x'; if (flags & SectionFlags::Writeable) - Name += 'w'; + Flags += 'w'; if (flags & SectionFlags::Mergeable) - Name += 'M'; + Flags += 'M'; if (flags & SectionFlags::Strings) - Name += 'S'; + Flags += 'S'; if (flags & SectionFlags::TLS) - Name += 'T'; + Flags += 'T'; - Name += "\""; + Flags += "\""; // FIXME: There can be exceptions here if (flags & SectionFlags::BSS) - Name += ",@nobits"; + Flags += ",@nobits"; else - Name += ",@progbits"; + Flags += ",@progbits"; // FIXME: entity size for mergeable sections break; case X86Subtarget::isCygwin: case X86Subtarget::isMingw: - Name += ",\""; + Flags += ",\""; if (flags & SectionFlags::Code) - Name += 'x'; + Flags += 'x'; if (flags & SectionFlags::Writeable) - Name += 'w'; + Flags += 'w'; - Name += "\""; + Flags += "\""; break; case X86Subtarget::isDarwin: @@ -517,6 +525,5 @@ std::string X86TargetAsmInfo::SectionForGlobal(const GlobalValue *GV) const { break; } - return Name; + return Flags; } - diff --git a/llvm/lib/Target/X86/X86TargetAsmInfo.h b/llvm/lib/Target/X86/X86TargetAsmInfo.h index 9f9ef3e9af4..35e7af89862 100644 --- a/llvm/lib/Target/X86/X86TargetAsmInfo.h +++ b/llvm/lib/Target/X86/X86TargetAsmInfo.h @@ -30,6 +30,7 @@ namespace llvm { virtual std::string SectionForGlobal(const GlobalValue *GV) const; virtual std::string UniqueSectionForGlobal(const GlobalValue* GV, SectionKind::Kind kind) const; + virtual std::string PrintSectionFlags(unsigned flags) const; private: const X86TargetMachine* X86TM; |

