summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-08-08 22:41:53 +0000
committerChris Lattner <sabre@nondot.org>2009-08-08 22:41:53 +0000
commit892e18239308f8a02a4c83758616be84a459c19d (patch)
tree84b7cceebedea3e4afd191e06686054be73baf22 /include
parent0aac30195c8f3f7066d4d069693e5d91f054f081 (diff)
downloadexternal_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.h18
-rw-r--r--include/llvm/Target/TargetAsmInfo.h8
-rw-r--r--include/llvm/Target/TargetLoweringObjectFile.h24
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;