aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/SplitModule.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Transforms/Utils/SplitModule.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/SplitModule.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Utils/SplitModule.cpp b/llvm/lib/Transforms/Utils/SplitModule.cpp
index b3d0f52..dcb2307 100644
--- a/llvm/lib/Transforms/Utils/SplitModule.cpp
+++ b/llvm/lib/Transforms/Utils/SplitModule.cpp
@@ -88,6 +88,13 @@ static void findPartitions(Module *M, ClusterIDMapType &ClusterIDMap,
Member = &GV;
}
+ // For aliases we should not separate them from their aliasees regardless
+ // of linkage.
+ if (GlobalAlias *GA = dyn_cast<GlobalAlias>(&GV)) {
+ if (const GlobalObject *Base = GA->getBaseObject())
+ GVtoClusterMap.unionSets(&GV, Base);
+ }
+
// Further only iterate over local GVs.
if (!GV.hasLocalLinkage())
return;