diff options
author | Schrodinger ZHU Yifan <i@zhuyi.fan> | 2022-07-20 15:30:38 -0700 |
---|---|---|
committer | Fangrui Song <i@maskray.me> | 2022-07-20 15:30:38 -0700 |
commit | 304027206c883b61b76465b3c2a139927ea71344 (patch) | |
tree | b3554b04aee4c2f76a237b379414a4aa116f894d /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | |
parent | fe1678d1b2bf395b7b1589001f285d26d4013c37 (diff) | |
download | llvm-304027206c883b61b76465b3c2a139927ea71344.zip llvm-304027206c883b61b76465b3c2a139927ea71344.tar.gz llvm-304027206c883b61b76465b3c2a139927ea71344.tar.bz2 |
[ThinLTO] Support aliased GlobalIFunc
Fixes https://github.com/llvm/llvm-project/issues/56290: when an ifunc is
aliased in LTO, clang will attempt to create an alias summary; however, as ifunc
is not included in the module summary, doing so will lead to crash.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D129009
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index 590562c..d7e012f 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -4104,8 +4104,9 @@ void ModuleBitcodeWriterBase::writePerModuleGlobalValueSummary() { for (const GlobalAlias &A : M.aliases()) { auto *Aliasee = A.getAliaseeObject(); - if (!Aliasee->hasName()) - // Nameless function don't have an entry in the summary, skip it. + // Skip ifunc and nameless functions which don't have an entry in the + // summary. + if (!Aliasee->hasName() || isa<GlobalIFunc>(Aliasee)) continue; auto AliasId = VE.getValueID(&A); auto AliaseeId = VE.getValueID(Aliasee); |