diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2019-01-20 11:41:25 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2019-01-20 11:41:25 +0000 | 
| commit | d9484dd61cc151c4f34c31e07f693fefa66316b5 (patch) | |
| tree | ab0560b3da293f1fafd3269c59692e929418f5c2 /contrib/llvm/lib/Target/TargetMachine.cpp | |
| parent | 79e0962d4c3cf1f0acf359a9d69cb3ac68c414c4 (diff) | |
| parent | d8e91e46262bc44006913e6796843909f1ac7bcd (diff) | |
Notes
Diffstat (limited to 'contrib/llvm/lib/Target/TargetMachine.cpp')
| -rw-r--r-- | contrib/llvm/lib/Target/TargetMachine.cpp | 16 | 
1 files changed, 10 insertions, 6 deletions
| diff --git a/contrib/llvm/lib/Target/TargetMachine.cpp b/contrib/llvm/lib/Target/TargetMachine.cpp index 092f5ea4104b..39d5705b2a53 100644 --- a/contrib/llvm/lib/Target/TargetMachine.cpp +++ b/contrib/llvm/lib/Target/TargetMachine.cpp @@ -40,12 +40,7 @@ TargetMachine::TargetMachine(const Target &T, StringRef DataLayoutString,        RequireStructuredCFG(false), DefaultOptions(Options), Options(Options) {  } -TargetMachine::~TargetMachine() { -  delete AsmInfo; -  delete MRI; -  delete MII; -  delete STI; -} +TargetMachine::~TargetMachine() = default;  bool TargetMachine::isPositionIndependent() const {    return getRelocationModel() == Reloc::PIC_; @@ -141,6 +136,15 @@ bool TargetMachine::shouldAssumeDSOLocal(const Module &M,    if (GV && GV->hasDLLImportStorageClass())      return false; +  // On MinGW, variables that haven't been declared with DLLImport may still +  // end up automatically imported by the linker. To make this feasible, +  // don't assume the variables to be DSO local unless we actually know +  // that for sure. This only has to be done for variables; for functions +  // the linker can insert thunks for calling functions from another DLL. +  if (TT.isWindowsGNUEnvironment() && GV && GV->isDeclarationForLinker() && +      isa<GlobalVariable>(GV)) +    return false; +    // Every other GV is local on COFF.    // Make an exception for windows OS in the triple: Some firmware builds use    // *-win32-macho triples. This (accidentally?) produced windows relocations | 
