aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/LTO/LTO.cpp
diff options
context:
space:
mode:
authorEugene Leviant <eleviant@accesssoftek.com>2019-07-05 13:26:05 +0000
committerEugene Leviant <eleviant@accesssoftek.com>2019-07-05 13:26:05 +0000
commite91f86f0ac70be2bfcb3fb862b4e6d9d9f84cf5f (patch)
treef5d1b66d575ed369304540880d3e1bed3a6ac194 /llvm/lib/LTO/LTO.cpp
parent8ca1c65cedb0b86c9706b5ec1a962d80f48af434 (diff)
downloadllvm-e91f86f0ac70be2bfcb3fb862b4e6d9d9f84cf5f.zip
llvm-e91f86f0ac70be2bfcb3fb862b4e6d9d9f84cf5f.tar.gz
llvm-e91f86f0ac70be2bfcb3fb862b4e6d9d9f84cf5f.tar.bz2
Reverted r365188 due to alignment problems on i686-android
llvm-svn: 365206
Diffstat (limited to 'llvm/lib/LTO/LTO.cpp')
-rw-r--r--llvm/lib/LTO/LTO.cpp21
1 files changed, 9 insertions, 12 deletions
diff --git a/llvm/lib/LTO/LTO.cpp b/llvm/lib/LTO/LTO.cpp
index 6450689..4ed1370 100644
--- a/llvm/lib/LTO/LTO.cpp
+++ b/llvm/lib/LTO/LTO.cpp
@@ -192,10 +192,8 @@ void llvm::computeLTOCacheKey(
AddUnsigned(VI.isDSOLocal());
AddUsedCfiGlobal(VI.getGUID());
}
- if (auto *GVS = dyn_cast<GlobalVarSummary>(GS)) {
- AddUnsigned(GVS->maybeReadOnly());
- AddUnsigned(GVS->maybeWriteOnly());
- }
+ if (auto *GVS = dyn_cast<GlobalVarSummary>(GS))
+ AddUnsigned(GVS->isReadOnly());
if (auto *FS = dyn_cast<FunctionSummary>(GS)) {
for (auto &TT : FS->type_tests())
UsedTypeIds.insert(TT);
@@ -373,9 +371,9 @@ void llvm::thinLTOResolvePrevailingInIndex(
GUIDPreservedSymbols);
}
-static bool isWeakObjectWithRWAccess(GlobalValueSummary *GVS) {
+static bool isWeakWriteableObject(GlobalValueSummary *GVS) {
if (auto *VarSummary = dyn_cast<GlobalVarSummary>(GVS->getBaseObject()))
- return !VarSummary->maybeReadOnly() && !VarSummary->maybeWriteOnly() &&
+ return !VarSummary->isReadOnly() &&
(VarSummary->linkage() == GlobalValue::WeakODRLinkage ||
VarSummary->linkage() == GlobalValue::LinkOnceODRLinkage);
return false;
@@ -396,12 +394,11 @@ static void thinLTOInternalizeAndPromoteGUID(
// We can't internalize available_externally globals because this
// can break function pointer equality.
S->linkage() != GlobalValue::AvailableExternallyLinkage &&
- // Functions and read-only variables with linkonce_odr and
- // weak_odr linkage can be internalized. We can't internalize
- // linkonce_odr and weak_odr variables which are both modified
- // and read somewhere in the program because reads and writes
- // will become inconsistent.
- !isWeakObjectWithRWAccess(S.get()))
+ // Functions and read-only variables with linkonce_odr and weak_odr
+ // linkage can be internalized. We can't internalize linkonce_odr
+ // and weak_odr variables which are modified somewhere in the
+ // program because reads and writes will become inconsistent.
+ !isWeakWriteableObject(S.get()))
S->setLinkage(GlobalValue::InternalLinkage);
}
}