[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