aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/TargetLoweringObjectFile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/TargetLoweringObjectFile.cpp')
-rw-r--r--llvm/lib/Target/TargetLoweringObjectFile.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/llvm/lib/Target/TargetLoweringObjectFile.cpp b/llvm/lib/Target/TargetLoweringObjectFile.cpp
index ee4cca6..907ecf4 100644
--- a/llvm/lib/Target/TargetLoweringObjectFile.cpp
+++ b/llvm/lib/Target/TargetLoweringObjectFile.cpp
@@ -64,7 +64,7 @@ static bool isNullOrUndef(const Constant *C) {
return true;
}
-static bool isSuitableForBSS(const GlobalVariable *GV, bool NoZerosInBSS) {
+static bool isSuitableForBSS(const GlobalVariable *GV) {
const Constant *C = GV->getInitializer();
// Must have zero initializer.
@@ -79,10 +79,6 @@ static bool isSuitableForBSS(const GlobalVariable *GV, bool NoZerosInBSS) {
if (GV->hasSection())
return false;
- // If -nozero-initialized-in-bss is specified, don't ever use BSS.
- if (NoZerosInBSS)
- return false;
-
// Otherwise, put it in BSS!
return true;
}
@@ -155,7 +151,7 @@ SectionKind TargetLoweringObjectFile::getKindForGlobal(const GlobalObject *GO,
// Handle thread-local data first.
if (GVar->isThreadLocal()) {
- if (isSuitableForBSS(GVar, TM.Options.NoZerosInBSS))
+ if (isSuitableForBSS(GVar) && !TM.Options.NoZerosInBSS)
return SectionKind::getThreadBSS();
return SectionKind::getThreadData();
}
@@ -164,8 +160,9 @@ SectionKind TargetLoweringObjectFile::getKindForGlobal(const GlobalObject *GO,
if (GVar->hasCommonLinkage())
return SectionKind::getCommon();
- // Variable can be easily put to BSS section.
- if (isSuitableForBSS(GVar, TM.Options.NoZerosInBSS)) {
+ // Most non-mergeable zero data can be put in the BSS section unless otherwise
+ // specified.
+ if (isSuitableForBSS(GVar) && !TM.Options.NoZerosInBSS) {
if (GVar->hasLocalLinkage())
return SectionKind::getBSSLocal();
else if (GVar->hasExternalLinkage())