summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86MachineFunctionInfo.h
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2012-06-01 16:27:21 +0000
committerHans Wennborg <hans@hanshq.net>2012-06-01 16:27:21 +0000
commit789acfb63d66b724c431bea498a89ebe61c33bc0 (patch)
treea996b2a733d8ff873bb3c3eb3b406c4f201d2218 /llvm/lib/Target/X86/X86MachineFunctionInfo.h
parentdc191a184f5b5d1bc9b003166eea610511801806 (diff)
downloadbcm5719-llvm-789acfb63d66b724c431bea498a89ebe61c33bc0.tar.gz
bcm5719-llvm-789acfb63d66b724c431bea498a89ebe61c33bc0.zip
Implement the local-dynamic TLS model for x86 (PR3985)
This implements codegen support for accesses to thread-local variables using the local-dynamic model, and adds a clean-up pass so that the base address for the TLS block can be re-used between local-dynamic access on an execution path. llvm-svn: 157818
Diffstat (limited to 'llvm/lib/Target/X86/X86MachineFunctionInfo.h')
-rw-r--r--llvm/lib/Target/X86/X86MachineFunctionInfo.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86MachineFunctionInfo.h b/llvm/lib/Target/X86/X86MachineFunctionInfo.h
index c7471091ec4..2bc308d86c5 100644
--- a/llvm/lib/Target/X86/X86MachineFunctionInfo.h
+++ b/llvm/lib/Target/X86/X86MachineFunctionInfo.h
@@ -66,6 +66,8 @@ class X86MachineFunctionInfo : public MachineFunctionInfo {
/// ArgumentStackSize - The number of bytes on stack consumed by the arguments
/// being passed on the stack.
unsigned ArgumentStackSize;
+ /// NumLocalDynamics - Number of local-dynamic TLS accesses.
+ unsigned NumLocalDynamics;
public:
X86MachineFunctionInfo() : ForceFramePointer(false),
@@ -79,7 +81,8 @@ public:
RegSaveFrameIndex(0),
VarArgsGPOffset(0),
VarArgsFPOffset(0),
- ArgumentStackSize(0) {}
+ ArgumentStackSize(0),
+ NumLocalDynamics(0) {}
explicit X86MachineFunctionInfo(MachineFunction &MF)
: ForceFramePointer(false),
@@ -93,7 +96,8 @@ public:
RegSaveFrameIndex(0),
VarArgsGPOffset(0),
VarArgsFPOffset(0),
- ArgumentStackSize(0) {}
+ ArgumentStackSize(0),
+ NumLocalDynamics(0) {}
bool getForceFramePointer() const { return ForceFramePointer;}
void setForceFramePointer(bool forceFP) { ForceFramePointer = forceFP; }
@@ -130,6 +134,9 @@ public:
unsigned getArgumentStackSize() const { return ArgumentStackSize; }
void setArgumentStackSize(unsigned size) { ArgumentStackSize = size; }
+
+ unsigned getNumLocalDynamicTLSAccesses() const { return NumLocalDynamics; }
+ void incNumLocalDynamicTLSAccesses() { ++NumLocalDynamics; }
};
} // End llvm namespace
OpenPOWER on IntegriCloud