diff options
Diffstat (limited to 'llvm/lib/Transforms/Utils/SplitModule.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/SplitModule.cpp | 7 |
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; |