diff options
author | Chris Lattner <sabre@nondot.org> | 2009-08-08 22:41:53 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-08-08 22:41:53 +0000 |
commit | 892e18239308f8a02a4c83758616be84a459c19d (patch) | |
tree | 84b7cceebedea3e4afd191e06686054be73baf22 /include | |
parent | 0aac30195c8f3f7066d4d069693e5d91f054f081 (diff) | |
download | external_llvm-892e18239308f8a02a4c83758616be84a459c19d.zip external_llvm-892e18239308f8a02a4c83758616be84a459c19d.tar.gz external_llvm-892e18239308f8a02a4c83758616be84a459c19d.tar.bz2 |
1. Make MCSection an abstract class.
2. Move section switch printing to MCSection virtual method which takes a
TAI. This eliminates textual formatting stuff from TLOF.
3. Eliminate SwitchToSectionDirective, getSectionFlagsAsString, and
TLOFELF::AtIsCommentChar.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78510 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/MC/MCSection.h | 18 | ||||
-rw-r--r-- | include/llvm/Target/TargetAsmInfo.h | 8 | ||||
-rw-r--r-- | include/llvm/Target/TargetLoweringObjectFile.h | 24 |
3 files changed, 16 insertions, 34 deletions
diff --git a/include/llvm/MC/MCSection.h b/include/llvm/MC/MCSection.h index 0669d0f..4e5969a 100644 --- a/include/llvm/MC/MCSection.h +++ b/include/llvm/MC/MCSection.h @@ -20,6 +20,8 @@ namespace llvm { class MCContext; + class TargetAsmInfo; + class raw_ostream; /// MCSection - Instances of this class represent a uniqued identifier for a /// section in the current translation unit. The MCContext class uniques and @@ -43,13 +45,13 @@ namespace llvm { public: virtual ~MCSection(); - static MCSection *Create(const StringRef &Name, bool IsDirective, - SectionKind K, MCContext &Ctx); - const std::string &getName() const { return Name; } bool isDirective() const { return IsDirective; } SectionKind getKind() const { return Kind; } + + virtual void PrintSwitchToSection(const TargetAsmInfo &TAI, + raw_ostream &OS) const = 0; }; @@ -60,7 +62,9 @@ namespace llvm { static MCSectionELF *Create(const StringRef &Name, bool IsDirective, SectionKind K, MCContext &Ctx); - + + virtual void PrintSwitchToSection(const TargetAsmInfo &TAI, + raw_ostream &OS) const; }; class MCSectionMachO : public MCSection { @@ -70,6 +74,9 @@ namespace llvm { static MCSectionMachO *Create(const StringRef &Name, bool IsDirective, SectionKind K, MCContext &Ctx); + + virtual void PrintSwitchToSection(const TargetAsmInfo &TAI, + raw_ostream &OS) const; }; class MCSectionCOFF : public MCSection { @@ -79,6 +86,9 @@ namespace llvm { static MCSectionCOFF *Create(const StringRef &Name, bool IsDirective, SectionKind K, MCContext &Ctx); + + virtual void PrintSwitchToSection(const TargetAsmInfo &TAI, + raw_ostream &OS) const; }; } // end namespace llvm diff --git a/include/llvm/Target/TargetAsmInfo.h b/include/llvm/Target/TargetAsmInfo.h index 92b9771..aa39c90 100644 --- a/include/llvm/Target/TargetAsmInfo.h +++ b/include/llvm/Target/TargetAsmInfo.h @@ -182,11 +182,6 @@ namespace llvm { //===--- Section Switching Directives ---------------------------------===// - /// SwitchToSectionDirective - This is the directive used when we want to - /// emit a global to an arbitrary section. The section name is emited after - /// this. - const char *SwitchToSectionDirective; // Defaults to "\t.section\t" - /// JumpTableDirective - if non-null, the directive to emit before a jump /// table. const char *JumpTableDirective; @@ -432,9 +427,6 @@ namespace llvm { unsigned getTextAlignFillValue() const { return TextAlignFillValue; } - const char *getSwitchToSectionDirective() const { - return SwitchToSectionDirective; - } const char *getGlobalDirective() const { return GlobalDirective; } diff --git a/include/llvm/Target/TargetLoweringObjectFile.h b/include/llvm/Target/TargetLoweringObjectFile.h index e517fd3..0b6fd30 100644 --- a/include/llvm/Target/TargetLoweringObjectFile.h +++ b/include/llvm/Target/TargetLoweringObjectFile.h @@ -169,14 +169,6 @@ public: return 0; } - /// getSectionFlagsAsString - Turn the flags in the specified SectionKind - /// into a string that can be printed to the assembly file after the - /// ".section foo" part of a section directive. - virtual void getSectionFlagsAsString(SectionKind Kind, - SmallVectorImpl<char> &Str, - const TargetAsmInfo &TAI) const { - } - protected: virtual const MCSection * SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind, @@ -187,7 +179,6 @@ protected: class TargetLoweringObjectFileELF : public TargetLoweringObjectFile { - bool AtIsCommentChar; // True if @ is the comment character on this target. bool HasCrazyBSS; protected: /// TLSDataSection - Section directive for Thread Local data. @@ -212,12 +203,9 @@ protected: const MCSection *getELFSection(const char *Name, bool isDirective, SectionKind Kind) const; public: - /// ELF Constructor - AtIsCommentChar is true if the CommentCharacter from TAI - /// is "@". - TargetLoweringObjectFileELF(bool atIsCommentChar = false, - // FIXME: REMOVE AFTER UNIQUING IS FIXED. + TargetLoweringObjectFileELF(// FIXME: REMOVE AFTER UNIQUING IS FIXED. bool hasCrazyBSS = false) - : AtIsCommentChar(atIsCommentChar), HasCrazyBSS(hasCrazyBSS) {} + : HasCrazyBSS(hasCrazyBSS) {} virtual void Initialize(MCContext &Ctx, const TargetMachine &TM); @@ -230,10 +218,6 @@ public: getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind, Mangler *Mang, const TargetMachine &TM) const; - void getSectionFlagsAsString(SectionKind Kind, - SmallVectorImpl<char> &Str, - const TargetAsmInfo &TAI) const; - virtual const MCSection * SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind, Mangler *Mang, const TargetMachine &TM) const; @@ -288,10 +272,6 @@ public: getExplicitSectionGlobal(const GlobalValue *GV, SectionKind Kind, Mangler *Mang, const TargetMachine &TM) const; - virtual void getSectionFlagsAsString(SectionKind Kind, - SmallVectorImpl<char> &Str, - const TargetAsmInfo &TAI) const; - virtual const MCSection * SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind, Mangler *Mang, const TargetMachine &TM) const; |