diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Target/TargetMachine.cpp')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/Target/TargetMachine.cpp | 31 |
1 files changed, 9 insertions, 22 deletions
diff --git a/contrib/llvm-project/llvm/lib/Target/TargetMachine.cpp b/contrib/llvm-project/llvm/lib/Target/TargetMachine.cpp index 28d783afe56c..97a1eb2f190a 100644 --- a/contrib/llvm-project/llvm/lib/Target/TargetMachine.cpp +++ b/contrib/llvm-project/llvm/lib/Target/TargetMachine.cpp @@ -36,8 +36,8 @@ TargetMachine::TargetMachine(const Target &T, StringRef DataLayoutString, const TargetOptions &Options) : TheTarget(T), DL(DataLayoutString), TargetTriple(TT), TargetCPU(CPU), TargetFS(FS), AsmInfo(nullptr), MRI(nullptr), MII(nullptr), STI(nullptr), - RequireStructuredCFG(false), DefaultOptions(Options), Options(Options) { -} + RequireStructuredCFG(false), O0WantsFastISel(false), + DefaultOptions(Options), Options(Options) {} TargetMachine::~TargetMachine() = default; @@ -63,18 +63,6 @@ void TargetMachine::resetTargetOptions(const Function &F) const { RESET_OPTION(NoInfsFPMath, "no-infs-fp-math"); RESET_OPTION(NoNaNsFPMath, "no-nans-fp-math"); RESET_OPTION(NoSignedZerosFPMath, "no-signed-zeros-fp-math"); - RESET_OPTION(NoTrappingFPMath, "no-trapping-math"); - - StringRef Denormal = - F.getFnAttribute("denormal-fp-math").getValueAsString(); - if (Denormal == "ieee") - Options.FPDenormalMode = FPDenormal::IEEE; - else if (Denormal == "preserve-sign") - Options.FPDenormalMode = FPDenormal::PreserveSign; - else if (Denormal == "positive-zero") - Options.FPDenormalMode = FPDenormal::PositiveZero; - else - Options.FPDenormalMode = DefaultOptions.FPDenormalMode; } /// Returns the code generation relocation model. The choices are static, PIC, @@ -196,15 +184,14 @@ bool TargetMachine::shouldAssumeDSOLocal(const Module &M, const Function *F = dyn_cast_or_null<Function>(GV); if (F && F->hasFnAttribute(Attribute::NonLazyBind)) return false; - - bool IsTLS = GV && GV->isThreadLocal(); - bool IsAccessViaCopyRelocs = - GV && Options.MCOptions.MCPIECopyRelocations && isa<GlobalVariable>(GV); Triple::ArchType Arch = TT.getArch(); - bool IsPPC = - Arch == Triple::ppc || Arch == Triple::ppc64 || Arch == Triple::ppc64le; - // Check if we can use copy relocations. PowerPC has no copy relocations. - if (!IsTLS && !IsPPC && (RM == Reloc::Static || IsAccessViaCopyRelocs)) + + // PowerPC prefers avoiding copy relocations. + if (Arch == Triple::ppc || TT.isPPC64()) + return false; + + // Check if we can use copy relocations. + if (!(GV && GV->isThreadLocal()) && RM == Reloc::Static) return true; } |
