diff options
author | Lauro Ramos Venancio <lauro.venancio@gmail.com> | 2007-04-21 20:56:26 +0000 |
---|---|---|
committer | Lauro Ramos Venancio <lauro.venancio@gmail.com> | 2007-04-21 20:56:26 +0000 |
commit | 2c5c111b6c144b05718404c85b9dfcc76b1619e7 (patch) | |
tree | dc04a6a623b3d509a400671ff97fa2f21edaca6c | |
parent | 7022d1fb2dbd65fa680d67e9598414ff958d07c2 (diff) | |
download | external_llvm-2c5c111b6c144b05718404c85b9dfcc76b1619e7.zip external_llvm-2c5c111b6c144b05718404c85b9dfcc76b1619e7.tar.gz external_llvm-2c5c111b6c144b05718404c85b9dfcc76b1619e7.tar.bz2 |
X86 TLS: Implement review feedback.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36318 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/CodeGen/SelectionDAGNodes.h | 12 | ||||
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 12 | ||||
-rw-r--r-- | lib/Target/X86/X86ISelLowering.cpp | 5 |
3 files changed, 15 insertions, 14 deletions
diff --git a/include/llvm/CodeGen/SelectionDAGNodes.h b/include/llvm/CodeGen/SelectionDAGNodes.h index 77d607a..f80e247 100644 --- a/include/llvm/CodeGen/SelectionDAGNodes.h +++ b/include/llvm/CodeGen/SelectionDAGNodes.h @@ -19,7 +19,6 @@ #ifndef LLVM_CODEGEN_SELECTIONDAGNODES_H #define LLVM_CODEGEN_SELECTIONDAGNODES_H -#include "llvm/GlobalVariable.h" #include "llvm/Value.h" #include "llvm/ADT/FoldingSet.h" #include "llvm/ADT/GraphTraits.h" @@ -1166,16 +1165,7 @@ class GlobalAddressSDNode : public SDNode { protected: friend class SelectionDAG; GlobalAddressSDNode(bool isTarget, const GlobalValue *GA, MVT::ValueType VT, - int o = 0) - : SDNode(dyn_cast<GlobalVariable>(GA) && - dyn_cast<GlobalVariable>(GA)->isThreadLocal() ? - // Thread Local - (isTarget ? ISD::TargetGlobalTLSAddress : ISD::GlobalTLSAddress) : - // Non Thread Local - (isTarget ? ISD::TargetGlobalAddress : ISD::GlobalAddress), - getSDVTList(VT)), Offset(o) { - TheGlobal = const_cast<GlobalValue*>(GA); - } + int o = 0); public: GlobalValue *getGlobal() const { return TheGlobal; } diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 75fbf8a..05348da 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -13,7 +13,6 @@ #include "llvm/CodeGen/SelectionDAG.h" #include "llvm/Constants.h" -#include "llvm/GlobalValue.h" #include "llvm/GlobalVariable.h" #include "llvm/Intrinsics.h" #include "llvm/Assembly/Writer.h" @@ -2573,6 +2572,17 @@ HandleSDNode::~HandleSDNode() { MorphNodeTo(ISD::HANDLENODE, VTs, 0, 0); // Drops operand uses. } +GlobalAddressSDNode::GlobalAddressSDNode(bool isTarget, const GlobalValue *GA, + MVT::ValueType VT, int o) + : SDNode(isa<GlobalVariable>(GA) && + dyn_cast<GlobalVariable>(GA)->isThreadLocal() ? + // Thread Local + (isTarget ? ISD::TargetGlobalTLSAddress : ISD::GlobalTLSAddress) : + // Non Thread Local + (isTarget ? ISD::TargetGlobalAddress : ISD::GlobalAddress), + getSDVTList(VT)), Offset(o) { + TheGlobal = const_cast<GlobalValue*>(GA); +} /// Profile - Gather unique data for the node. /// diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index b37e47c..ec86924 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -3004,8 +3004,9 @@ LowerToTLSExecModel(GlobalAddressSDNode *GA, SelectionDAG &DAG, SDOperand X86TargetLowering::LowerGlobalTLSAddress(SDOperand Op, SelectionDAG &DAG) { // TODO: implement the "local dynamic" model - // TODO: implement the "initial exec"model for pic executables - assert(!Subtarget->is64Bit() && "TLS not implemented for X86_64"); + // TODO: implement the "initial exec"model for pic executables + assert(!Subtarget->is64Bit() && Subtarget->isTargetELF() && + "TLS not implemented for non-ELF and 64-bit targets"); GlobalAddressSDNode *GA = cast<GlobalAddressSDNode>(Op); // If the relocation model is PIC, use the "General Dynamic" TLS Model, // otherwise use the "Local Exec"TLS Model |