mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-20 18:56:04 +00:00
Restore old behavior. Always auto-detect features unless cpu or features are specified.
llvm-svn: 134757
This commit is contained in:
parent
9719ca7c76
commit
03af99dd82
@ -225,7 +225,7 @@ void X86Subtarget::AutoDetectSubtargetFeatures() {
|
||||
|
||||
X86Subtarget::X86Subtarget(const std::string &TT, const std::string &CPU,
|
||||
const std::string &FS,
|
||||
unsigned StackAlignOverride)
|
||||
unsigned StackAlignOverride, bool is64Bit)
|
||||
: X86GenSubtargetInfo(TT, CPU, FS)
|
||||
, PICStyle(PICStyles::None)
|
||||
, X86SSELevel(NoMMXSSE)
|
||||
@ -246,20 +246,9 @@ X86Subtarget::X86Subtarget(const std::string &TT, const std::string &CPU,
|
||||
// FIXME: this is a known good value for Yonah. How about others?
|
||||
, MaxInlineSizeThreshold(128)
|
||||
, TargetTriple(TT)
|
||||
, In64BitMode(false) {
|
||||
// Insert the architecture feature derived from the target triple into the
|
||||
// feature string. This is important for setting features that are implied
|
||||
// based on the architecture version.
|
||||
std::string ArchFS = X86_MC::ParseX86Triple(TT);
|
||||
if (!FS.empty()) {
|
||||
if (!ArchFS.empty())
|
||||
ArchFS = ArchFS + "," + FS;
|
||||
else
|
||||
ArchFS = FS;
|
||||
}
|
||||
|
||||
, In64BitMode(is64Bit) {
|
||||
// Determine default and user specified characteristics
|
||||
if (!ArchFS.empty()) {
|
||||
if (!FS.empty() || !CPU.empty()) {
|
||||
std::string CPUName = CPU;
|
||||
if (CPUName.empty()) {
|
||||
#if defined (__x86_64__) || defined(__i386__)
|
||||
@ -270,7 +259,8 @@ X86Subtarget::X86Subtarget(const std::string &TT, const std::string &CPU,
|
||||
}
|
||||
|
||||
// If feature string is not empty, parse features string.
|
||||
ParseSubtargetFeatures(CPUName, ArchFS);
|
||||
ParseSubtargetFeatures(CPUName, FS);
|
||||
|
||||
// All X86-64 CPUs also have SSE2, however user might request no SSE via
|
||||
// -mattr, so don't force SSELevel here.
|
||||
if (HasAVX)
|
||||
@ -279,9 +269,6 @@ X86Subtarget::X86Subtarget(const std::string &TT, const std::string &CPU,
|
||||
// Otherwise, use CPUID to auto-detect feature set.
|
||||
AutoDetectSubtargetFeatures();
|
||||
|
||||
// If CPU is 64-bit capable, default to 64-bit mode if not specified.
|
||||
In64BitMode = HasX86_64;
|
||||
|
||||
// Make sure SSE2 is enabled; it is available on all X86-64 CPUs.
|
||||
if (In64BitMode && !HasAVX && X86SSELevel < SSE2)
|
||||
X86SSELevel = SSE2;
|
||||
|
@ -122,7 +122,7 @@ public:
|
||||
///
|
||||
X86Subtarget(const std::string &TT, const std::string &CPU,
|
||||
const std::string &FS,
|
||||
unsigned StackAlignOverride);
|
||||
unsigned StackAlignOverride, bool is64Bit);
|
||||
|
||||
/// getStackAlignment - Returns the minimum alignment known to hold of the
|
||||
/// stack frame on entry to the function and which must be maintained by every
|
||||
|
@ -120,7 +120,7 @@ X86TargetMachine::X86TargetMachine(const Target &T, const std::string &TT,
|
||||
const std::string &CPU,
|
||||
const std::string &FS, bool is64Bit)
|
||||
: LLVMTargetMachine(T, TT, CPU, FS),
|
||||
Subtarget(TT, CPU, FS, StackAlignmentOverride),
|
||||
Subtarget(TT, CPU, FS, StackAlignmentOverride, is64Bit),
|
||||
FrameLowering(*this, Subtarget),
|
||||
ELFWriterInfo(is64Bit, true) {
|
||||
DefRelocModel = getRelocationModel();
|
||||
|
Loading…
x
Reference in New Issue
Block a user