[llvm] r346523 - [Hexagon] Place globals with explicit .sdata section in small data
Krzysztof Parzyszek via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 9 09:31:23 PST 2018
Author: kparzysz
Date: Fri Nov 9 09:31:22 2018
New Revision: 346523
URL: http://llvm.org/viewvc/llvm-project?rev=346523&view=rev
Log:
[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.
Added:
llvm/trunk/test/CodeGen/Hexagon/sdata-explicit-section.ll
Modified:
llvm/trunk/lib/Target/Hexagon/HexagonTargetObjectFile.cpp
Modified: llvm/trunk/lib/Target/Hexagon/HexagonTargetObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonTargetObjectFile.cpp?rev=346523&r1=346522&r2=346523&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/HexagonTargetObjectFile.cpp (original)
+++ llvm/trunk/lib/Target/Hexagon/HexagonTargetObjectFile.cpp Fri Nov 9 09:31:22 2018
@@ -199,11 +199,10 @@ MCSection *HexagonTargetObjectFile::getE
/// 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::isGlobalIn
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;
Added: llvm/trunk/test/CodeGen/Hexagon/sdata-explicit-section.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Hexagon/sdata-explicit-section.ll?rev=346523&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/Hexagon/sdata-explicit-section.ll (added)
+++ llvm/trunk/test/CodeGen/Hexagon/sdata-explicit-section.ll Fri Nov 9 09:31:22 2018
@@ -0,0 +1,6 @@
+; RUN: llc -march=hexagon -hexagon-small-data-threshold=0 < %s | FileCheck %s
+; RUN: llc -march=hexagon -relocation-model=pic < %s | FileCheck %s
+
+; CHECK: .section .sdata.4,"aws", at progbits
+ at g0 = global i32 zeroinitializer, section ".sdata"
+
More information about the llvm-commits
mailing list