forked from OSchip/llvm-project
make PIC vs DynamicNoPIC be explicit in PICStyles.
llvm-svn: 75275
This commit is contained in:
parent
bd3e560f1a
commit
ba4d73310a
|
@ -34,18 +34,6 @@ AsmWriterFlavor("x86-asm-syntax", cl::init(X86Subtarget::Unset),
|
|||
clEnumValN(X86Subtarget::Intel, "intel", "Emit Intel-style assembly"),
|
||||
clEnumValEnd));
|
||||
|
||||
bool X86Subtarget::isPICStyleStubPIC(const TargetMachine &TM) const {
|
||||
return PICStyle == PICStyles::Stub &&
|
||||
TM.getRelocationModel() == Reloc::PIC_;
|
||||
}
|
||||
|
||||
bool X86Subtarget::isPICStyleStubNoDynamic(const TargetMachine &TM) const {
|
||||
return PICStyle == PICStyles::Stub &&
|
||||
TM.getRelocationModel() == Reloc::DynamicNoPIC;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// ClassifyGlobalReference - Classify a global variable reference for the
|
||||
/// current subtarget according to how we should reference it in a non-pcrel
|
||||
/// context.
|
||||
|
|
|
@ -26,10 +26,11 @@ class TargetMachine;
|
|||
///
|
||||
namespace PICStyles {
|
||||
enum Style {
|
||||
Stub, // Used on i386-darwin
|
||||
GOT, // Used on many 32-bit unices.
|
||||
RIPRel, // Used on X86-64 when not in -static mode.
|
||||
None // Set when in -static mode (not PIC or DynamicNoPIC mode).
|
||||
StubPIC, // Used on i386-darwin in -fPIC mode.
|
||||
StubDynamicNoPIC, // Used on i386-darwin in -mdynamic-no-pic mode.
|
||||
GOT, // Used on many 32-bit unices in -fPIC mode.
|
||||
RIPRel, // Used on X86-64 when not in -static mode.
|
||||
None // Set when in -static mode (not PIC or DynamicNoPIC mode).
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -186,9 +187,16 @@ public:
|
|||
bool isPICStyleGOT() const { return PICStyle == PICStyles::GOT; }
|
||||
bool isPICStyleRIPRel() const { return PICStyle == PICStyles::RIPRel; }
|
||||
|
||||
bool isPICStyleStubPIC(const TargetMachine &TM) const;
|
||||
bool isPICStyleStubNoDynamic(const TargetMachine &TM) const;
|
||||
bool isPICStyleStubAny() const { return PICStyle == PICStyles::Stub; }
|
||||
bool isPICStyleStubPIC(const TargetMachine &TM) const {
|
||||
return PICStyle == PICStyles::StubPIC;
|
||||
}
|
||||
|
||||
bool isPICStyleStubNoDynamic(const TargetMachine &TM) const {
|
||||
return PICStyle == PICStyles::StubDynamicNoPIC;
|
||||
}
|
||||
bool isPICStyleStubAny() const {
|
||||
return PICStyle == PICStyles::StubDynamicNoPIC ||
|
||||
PICStyle == PICStyles::StubPIC; }
|
||||
|
||||
/// getDarwinVers - Return the darwin version number, 8 = Tiger, 9 = Leopard,
|
||||
/// 10 = Snow Leopard, etc.
|
||||
|
|
|
@ -183,8 +183,12 @@ X86TargetMachine::X86TargetMachine(const Module &M, const std::string &FS,
|
|||
} else if (Subtarget.isTargetDarwin()) {
|
||||
if (Subtarget.is64Bit())
|
||||
Subtarget.setPICStyle(PICStyles::RIPRel);
|
||||
else
|
||||
Subtarget.setPICStyle(PICStyles::Stub);
|
||||
else if (getRelocationModel() == Reloc::PIC_)
|
||||
Subtarget.setPICStyle(PICStyles::StubPIC);
|
||||
else {
|
||||
assert(getRelocationModel() == Reloc::DynamicNoPIC);
|
||||
Subtarget.setPICStyle(PICStyles::StubDynamicNoPIC);
|
||||
}
|
||||
} else if (Subtarget.isTargetELF()) {
|
||||
if (Subtarget.is64Bit())
|
||||
Subtarget.setPICStyle(PICStyles::RIPRel);
|
||||
|
|
Loading…
Reference in New Issue