summaryrefslogtreecommitdiff
path: root/include/llvm/MC
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2011-07-20 19:50:42 +0000
committerEvan Cheng <evan.cheng@apple.com>2011-07-20 19:50:42 +0000
commit203576aa0cb9d8bf2d2e4d910ebab4b7a63262ae (patch)
treea16f407717874ac406be0e520508b944a77a22b0 /include/llvm/MC
parent8eda1310dbbbb747c0e8646dbdfc7a2c33f7a6b6 (diff)
downloadllvm-203576aa0cb9d8bf2d2e4d910ebab4b7a63262ae.tar.gz
llvm-203576aa0cb9d8bf2d2e4d910ebab4b7a63262ae.tar.bz2
llvm-203576aa0cb9d8bf2d2e4d910ebab4b7a63262ae.tar.xz
Goodbye TargetAsmInfo. This eliminate last bit of CodeGen and Target in llvm-mc.
There is still a bit more refactoring left to do in Targets. But we are now very close to fixing all the layering issues in MC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135611 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/MC')
-rw-r--r--include/llvm/MC/MCContext.h7
-rw-r--r--include/llvm/MC/MCObjectFileInfo.h18
2 files changed, 18 insertions, 7 deletions
diff --git a/include/llvm/MC/MCContext.h b/include/llvm/MC/MCContext.h
index 9de89fe3fc..a49a35c8d5 100644
--- a/include/llvm/MC/MCContext.h
+++ b/include/llvm/MC/MCContext.h
@@ -31,7 +31,6 @@ namespace llvm {
class MCLineSection;
class StringRef;
class Twine;
- class TargetAsmInfo;
class MCSectionMachO;
class MCSectionELF;
@@ -54,8 +53,6 @@ namespace llvm {
/// The MCObjectFileInfo for this target.
const MCObjectFileInfo *MOFI;
- const TargetAsmInfo *TAI;
-
/// Allocator - Allocator object used for creating machine code objects.
///
/// We use a bump pointer allocator to avoid the need to track all allocated
@@ -119,7 +116,7 @@ namespace llvm {
public:
explicit MCContext(const MCAsmInfo &MAI, const MCRegisterInfo &MRI,
- const MCObjectFileInfo *MOFI, const TargetAsmInfo *TAI);
+ const MCObjectFileInfo *MOFI);
~MCContext();
const MCAsmInfo &getAsmInfo() const { return MAI; }
@@ -128,8 +125,6 @@ namespace llvm {
const MCObjectFileInfo *getObjectFileInfo() const { return MOFI; }
- const TargetAsmInfo &getTargetAsmInfo() const { return *TAI; }
-
void setAllowTemporaryLabels(bool Value) { AllowTemporaryLabels = Value; }
/// @name Symbol Management
diff --git a/include/llvm/MC/MCObjectFileInfo.h b/include/llvm/MC/MCObjectFileInfo.h
index b507c0c0a9..060d5085d0 100644
--- a/include/llvm/MC/MCObjectFileInfo.h
+++ b/include/llvm/MC/MCObjectFileInfo.h
@@ -40,6 +40,13 @@ protected:
/// non-.globl label. This defaults to true.
bool IsFunctionEHFrameSymbolPrivate;
+ /// PersonalityEncoding, LSDAEncoding, FDEEncoding, TTypeEncoding - Some
+ /// encoding values for EH.
+ unsigned PersonalityEncoding;
+ unsigned LSDAEncoding;
+ unsigned FDEEncoding;
+ unsigned FDECFIEncoding;
+ unsigned TTypeEncoding;
/// TextSection - Section directive for standard text.
///
@@ -151,7 +158,8 @@ protected:
const MCSection *XDataSection;
public:
- void InitMCObjectFileInfo(StringRef TT, Reloc::Model RM, MCContext &ctx);
+ void InitMCObjectFileInfo(StringRef TT, Reloc::Model RM, CodeModel::Model CM,
+ MCContext &ctx);
bool isFunctionEHFrameSymbolPrivate() const {
return IsFunctionEHFrameSymbolPrivate;
@@ -163,6 +171,13 @@ public:
return CommDirectiveSupportsAlignment;
}
+ unsigned getPersonalityEncoding() const { return PersonalityEncoding; }
+ unsigned getLSDAEncoding() const { return LSDAEncoding; }
+ unsigned getFDEEncoding(bool CFI) const {
+ return CFI ? FDECFIEncoding : FDEEncoding;
+ }
+ unsigned getTTypeEncoding() const { return TTypeEncoding; }
+
const MCSection *getTextSection() const { return TextSection; }
const MCSection *getDataSection() const { return DataSection; }
const MCSection *getBSSSection() const { return BSSSection; }
@@ -262,6 +277,7 @@ private:
enum Environment { IsMachO, IsELF, IsCOFF };
Environment Env;
Reloc::Model RelocM;
+ CodeModel::Model CMModel;
MCContext *Ctx;
void InitMachOMCObjectFileInfo(Triple T);