diff options
Diffstat (limited to 'lib/Target/Sparc')
-rw-r--r-- | lib/Target/Sparc/SparcTargetAsmInfo.cpp | 31 | ||||
-rw-r--r-- | lib/Target/Sparc/SparcTargetAsmInfo.h | 4 |
2 files changed, 20 insertions, 15 deletions
diff --git a/lib/Target/Sparc/SparcTargetAsmInfo.cpp b/lib/Target/Sparc/SparcTargetAsmInfo.cpp index 0087c26..7b9f449 100644 --- a/lib/Target/Sparc/SparcTargetAsmInfo.cpp +++ b/lib/Target/Sparc/SparcTargetAsmInfo.cpp @@ -12,7 +12,7 @@ //===----------------------------------------------------------------------===// #include "SparcTargetAsmInfo.h" - +#include "llvm/ADT/SmallVector.h" using namespace llvm; SparcELFTargetAsmInfo::SparcELFTargetAsmInfo(const TargetMachine &TM): @@ -32,19 +32,22 @@ SparcELFTargetAsmInfo::SparcELFTargetAsmInfo(const TargetMachine &TM): /* Override */ true); } -std::string SparcELFTargetAsmInfo::printSectionFlags(unsigned flags) const { - if (flags & SectionFlags::Mergeable) - return ELFTargetAsmInfo::printSectionFlags(flags); - std::string Flags; - if (!(flags & SectionFlags::Debug)) - Flags += ",#alloc"; - if (flags & SectionFlags::Code) - Flags += ",#execinstr"; - if (flags & SectionFlags::Writable) - Flags += ",#write"; - if (flags & SectionFlags::TLS) - Flags += ",#tls"; +void SparcELFTargetAsmInfo::getSectionFlags(unsigned Flags, + SmallVectorImpl<char> &Str) const { + if (Flags & SectionFlags::Mergeable) + return ELFTargetAsmInfo::getSectionFlags(Flags, Str); + + // FIXME: Inefficient. + std::string Res; + if (!(Flags & SectionFlags::Debug)) + Res += ",#alloc"; + if (Flags & SectionFlags::Code) + Res += ",#execinstr"; + if (Flags & SectionFlags::Writable) + Res += ",#write"; + if (Flags & SectionFlags::TLS) + Res += ",#tls"; - return Flags; + Str.append(Res.begin(), Res.end()); } diff --git a/lib/Target/Sparc/SparcTargetAsmInfo.h b/lib/Target/Sparc/SparcTargetAsmInfo.h index 1af5d80..77cf4e9 100644 --- a/lib/Target/Sparc/SparcTargetAsmInfo.h +++ b/lib/Target/Sparc/SparcTargetAsmInfo.h @@ -25,7 +25,9 @@ namespace llvm { struct SparcELFTargetAsmInfo : public ELFTargetAsmInfo { explicit SparcELFTargetAsmInfo(const TargetMachine &TM); - std::string printSectionFlags(unsigned flags) const; + virtual void getSectionFlags(unsigned Flags, + SmallVectorImpl<char> &Str) const; + }; } // namespace llvm |