[all-commits] [llvm/llvm-project] 7ec8d7: [CallGraphUpdater] Properly remove strongly connec...

Johannes Doerfert via All-commits all-commits at lists.llvm.org
Wed Apr 15 16:40:30 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 7ec8d79385cfb47a4fc1ae00ee01d19d52d7fba6
      https://github.com/llvm/llvm-project/commit/7ec8d79385cfb47a4fc1ae00ee01d19d52d7fba6
  Author: Johannes Doerfert <johannes at jdoerfert.de>
  Date:   2020-04-15 (Wed, 15 Apr 2020)

  Changed paths:
    M llvm/lib/Transforms/Utils/CallGraphUpdater.cpp
    M llvm/unittests/IR/LegacyPassManagerTest.cpp

  Log Message:
  -----------
  [CallGraphUpdater] Properly remove strongly connected components (oldPM)

Summary:
The old code did eliminate references from and to functions that were
about to be deleted only just before we deleted them. This can cause
references from other functions that are supposed to be deleted to still
exist, depending on the order. If the functions form a strongly
connected component the problem manifests regardless of the order in
which we try to actually delete the functions.

This patch introduces a two step deletion. First we remove all
references and then we delete the function. Note that this only affects
the old call graph. There should not be any functional changes if no old
style call graph was given.

To test this we delete two strongly connected functions instead of one
in an existing test.

Reviewers: hfinkel

Subscribers: hiraditya, bollu, llvm-commits

Tags: #llvm

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




More information about the All-commits mailing list