diff options
| author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2018-11-09 17:31:22 +0000 |
|---|---|---|
| committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2018-11-09 17:31:22 +0000 |
| commit | 8567de0871618ad4d6c30432f59bc232daa40100 (patch) | |
| tree | 3837e81531188db727667140671e11b53d136369 /llvm/lib/Target | |
| parent | 86f8b70f1b7c3f92266197d580f6d86414650997 (diff) | |
| download | bcm5719-llvm-8567de0871618ad4d6c30432f59bc232daa40100.tar.gz bcm5719-llvm-8567de0871618ad4d6c30432f59bc232daa40100.zip | |
[Hexagon] Place globals with explicit .sdata section in small data
Both -fPIC and -G0 disable placement of globals in small data section,
but if a global has an explicit section assigmnent placing it in small
data, it should go there anyway.
llvm-svn: 346523
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/Hexagon/HexagonTargetObjectFile.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/llvm/lib/Target/Hexagon/HexagonTargetObjectFile.cpp b/llvm/lib/Target/Hexagon/HexagonTargetObjectFile.cpp index 386cd14c827..2185bf8eebc 100644 --- a/llvm/lib/Target/Hexagon/HexagonTargetObjectFile.cpp +++ b/llvm/lib/Target/Hexagon/HexagonTargetObjectFile.cpp @@ -199,11 +199,10 @@ MCSection *HexagonTargetObjectFile::getExplicitSectionGlobal( /// section. bool HexagonTargetObjectFile::isGlobalInSmallSection(const GlobalObject *GO, const TargetMachine &TM) const { - if (!isSmallDataEnabled(TM)) { - LLVM_DEBUG(dbgs() << "Small data is not available.\n"); - return false; - } - + bool HaveSData = isSmallDataEnabled(TM); + if (!HaveSData) + LLVM_DEBUG(dbgs() << "Small-data allocation is disabled, but symbols " + "may have explicit section assignments...\n"); // Only global variables, not functions. LLVM_DEBUG(dbgs() << "Checking if value is in small-data, -G" << SmallDataThreshold << ": \"" << GO->getName() << "\": "); @@ -223,6 +222,12 @@ bool HexagonTargetObjectFile::isGlobalInSmallSection(const GlobalObject *GO, return IsSmall; } + // If sdata is disabled, stop the checks here. + if (!HaveSData) { + LLVM_DEBUG(dbgs() << "no, small-data allocation is disabled\n"); + return false; + } + if (GVar->isConstant()) { LLVM_DEBUG(dbgs() << "no, is a constant\n"); return false; |

