Index: lib/Target/X86/X86.td =================================================================== --- lib/Target/X86/X86.td +++ lib/Target/X86/X86.td @@ -270,6 +270,9 @@ : SubtargetFeature< "fast-lzcnt", "HasFastLZCNT", "true", "LZCNT instructions are as fast as most simple integer ops">; +def FeatureSeparateStackSeg + : SubtargetFeature<"separate-stack-seg", "UseSeparateStackSeg", "true", + "Restrict access to the stack">; //===----------------------------------------------------------------------===// // X86 processors supported. Index: lib/Target/X86/X86Subtarget.h =================================================================== --- lib/Target/X86/X86Subtarget.h +++ lib/Target/X86/X86Subtarget.h @@ -289,6 +289,9 @@ /// Use software floating point for code generation. bool UseSoftFloat; + /// Restrict access to the stack + bool UseSeparateStackSeg; + /// The minimum alignment known to hold of the stack frame on /// entry to the function and which must be maintained by every function. unsigned stackAlignment; @@ -487,6 +490,7 @@ bool isAtom() const { return X86ProcFamily == IntelAtom; } bool isSLM() const { return X86ProcFamily == IntelSLM; } bool useSoftFloat() const { return UseSoftFloat; } + bool useSeparateStackSeg() const { return UseSeparateStackSeg; } /// Use mfence if we have SSE2 or we're on x86-64 (even if we asked for /// no-sse2). There isn't any reason to disable it if the target processor Index: lib/Target/X86/X86Subtarget.cpp =================================================================== --- lib/Target/X86/X86Subtarget.cpp +++ lib/Target/X86/X86Subtarget.cpp @@ -304,6 +304,7 @@ // FIXME: this is a known good value for Yonah. How about others? MaxInlineSizeThreshold = 128; UseSoftFloat = false; + UseSeparateStackSeg = false; } X86Subtarget &X86Subtarget::initializeSubtargetDependencies(StringRef CPU,