Move the TLSModel information into the TargetMachine rather than hiding

in TargetLowering. There was already a FIXME about this location being
odd. The interface is simplified as a consequence. This will also make
it easier to change TLS models when compiling with PIE.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154292 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chandler Carruth
2012-04-08 17:20:55 +00:00
parent 0f55449246
commit 34797136cb
6 changed files with 37 additions and 35 deletions

View File

@@ -39,28 +39,6 @@ static cl::opt<bool>
AllowPromoteIntElem("promote-elements", cl::Hidden, cl::init(true),
cl::desc("Allow promotion of integer vector element types"));
namespace llvm {
TLSModel::Model getTLSModel(const GlobalValue *GV, Reloc::Model reloc) {
bool isLocal = GV->hasLocalLinkage();
bool isDeclaration = GV->isDeclaration();
// FIXME: what should we do for protected and internal visibility?
// For variables, is internal different from hidden?
bool isHidden = GV->hasHiddenVisibility();
if (reloc == Reloc::PIC_) {
if (isLocal || isHidden)
return TLSModel::LocalDynamic;
else
return TLSModel::GeneralDynamic;
} else {
if (!isDeclaration || isHidden)
return TLSModel::LocalExec;
else
return TLSModel::InitialExec;
}
}
}
/// InitLibcallNames - Set default libcall names.
///
static void InitLibcallNames(const char **Names) {