[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