[all-commits] [llvm/llvm-project] 3ee826: Make dependency between certain analysis passes tr...

Björn Pettersson via All-commits all-commits at lists.llvm.org
Wed May 5 06:18:42 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 3ee826594a9ed4119dd1fdfdd3f5f9175991e688
      https://github.com/llvm/llvm-project/commit/3ee826594a9ed4119dd1fdfdd3f5f9175991e688
  Author: Bjorn Pettersson <bjorn.a.pettersson at ericsson.com>
  Date:   2021-05-05 (Wed, 05 May 2021)

  Changed paths:
    M llvm/lib/Analysis/LazyBlockFrequencyInfo.cpp
    M llvm/lib/Analysis/LazyBranchProbabilityInfo.cpp
    M llvm/lib/Analysis/LoopAccessAnalysis.cpp
    A llvm/test/Other/pr49950.ll
    M polly/lib/Analysis/ScopPass.cpp

  Log Message:
  -----------
  Make dependency between certain analysis passes transitive (reapply)

LazyBlockFrequenceInfoPass, LazyBranchProbabilityInfoPass and
LoopAccessLegacyAnalysis all cache pointers to their nestled required
analysis passes. One need to use addRequiredTransitive to describe
that the nestled passes can't be freed until those analysis passes
no longer are used themselves.

There is still a bit of a mess considering the getLazyBPIAnalysisUsage
and getLazyBFIAnalysisUsage functions. Those functions are used from
both Transform, CodeGen and Analysis passes. I figure it is OK to
use addRequiredTransitive also when being used from Transform and
CodeGen passes. On the other hand, I figure we must do it when
used from other Analysis passes. So using addRequiredTransitive should
be more correct here. An alternative solution would be to add a
bool option in those functions to let the user tell if it is a
analysis pass or not. Since those lazy passes will be obsolete when
new PM has conquered the world I figure we can leave it like this
right now.

Intention with the patch is to fix PR49950. It at least solves the
problem for the reproducer in PR49950. However, that reproducer
need five passes in a specific order, so there are lots of various
"solutions" that could avoid the crash without actually fixing the
root cause.

This is a reapply of commit 3655f0757f2b4b, that was reverted in
33ff3c20498ef5c2057 due to problems with assertions in the polly
lit tests. That problem is supposed to be solved by also adjusting
ScopPass to explicitly preserve LazyBlockFrequencyInfo and
LazyBranchProbabilityInfo (it already preserved
OptimizationRemarkEmitter which depends on those lazy passes).

Differential Revision: https://reviews.llvm.org/D100958




More information about the All-commits mailing list