diff options
author | Teresa Johnson <tejohnson@google.com> | 2019-01-04 19:04:54 +0000 |
---|---|---|
committer | Teresa Johnson <tejohnson@google.com> | 2019-01-04 19:04:54 +0000 |
commit | 853b962416bcb5c85df455eb4d89c896f9147ee8 (patch) | |
tree | e470c0dffcc023c6b58014e1d85abb3265aeb6c5 /llvm/lib/Transforms/Utils/Utils.cpp | |
parent | 1e36882b5291d5a7209be4f9c99b9713828afac4 (diff) | |
download | llvm-853b962416bcb5c85df455eb4d89c896f9147ee8.zip llvm-853b962416bcb5c85df455eb4d89c896f9147ee8.tar.gz llvm-853b962416bcb5c85df455eb4d89c896f9147ee8.tar.bz2 |
[ThinLTO] Handle chains of aliases
At -O0, globalopt is not run during the compile step, and we can have a
chain of an alias having an immediate aliasee of another alias. The
summaries are constructed assuming aliases in a canonical form
(flattened chains), and as a result only the base object but no
intermediate aliases were preserved.
Fix by adding a pass that canonicalize aliases, which ensures each
alias is a direct alias of the base object.
Reviewers: pcc, davidxl
Subscribers: mehdi_amini, inglorion, eraman, steven_wu, dexonsmith, arphaman, llvm-commits
Differential Revision: https://reviews.llvm.org/D54507
llvm-svn: 350423
Diffstat (limited to 'llvm/lib/Transforms/Utils/Utils.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/Utils.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Utils/Utils.cpp b/llvm/lib/Transforms/Utils/Utils.cpp index afd842f..95416de 100644 --- a/llvm/lib/Transforms/Utils/Utils.cpp +++ b/llvm/lib/Transforms/Utils/Utils.cpp @@ -26,6 +26,7 @@ using namespace llvm; void llvm::initializeTransformUtils(PassRegistry &Registry) { initializeAddDiscriminatorsLegacyPassPass(Registry); initializeBreakCriticalEdgesPass(Registry); + initializeCanonicalizeAliasesLegacyPassPass(Registry); initializeInstNamerPass(Registry); initializeLCSSAWrapperPassPass(Registry); initializeLibCallsShrinkWrapLegacyPassPass(Registry); |