aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/llvm/lib/Analysis/CaptureTracking.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2023-04-14 21:41:27 +0000
committerDimitry Andric <dim@FreeBSD.org>2023-06-22 18:20:56 +0000
commitbdd1243df58e60e85101c09001d9812a789b6bc4 (patch)
treea1ce621c7301dd47ba2ddc3b8eaa63b441389481 /contrib/llvm-project/llvm/lib/Analysis/CaptureTracking.cpp
parent781624ca2d054430052c828ba8d2c2eaf2d733e7 (diff)
parente3b557809604d036af6e00c60f012c2025b59a5e (diff)
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Analysis/CaptureTracking.cpp')
-rw-r--r--contrib/llvm-project/llvm/lib/Analysis/CaptureTracking.cpp21
1 files changed, 3 insertions, 18 deletions
diff --git a/contrib/llvm-project/llvm/lib/Analysis/CaptureTracking.cpp b/contrib/llvm-project/llvm/lib/Analysis/CaptureTracking.cpp
index f4fd660ac7e0..7f3a2b49aca9 100644
--- a/contrib/llvm-project/llvm/lib/Analysis/CaptureTracking.cpp
+++ b/contrib/llvm-project/llvm/lib/Analysis/CaptureTracking.cpp
@@ -179,25 +179,10 @@ namespace {
if (EphValues.contains(I))
return false;
- if (!EarliestCapture) {
+ if (!EarliestCapture)
EarliestCapture = I;
- } else if (EarliestCapture->getParent() == I->getParent()) {
- if (I->comesBefore(EarliestCapture))
- EarliestCapture = I;
- } else {
- BasicBlock *CurrentBB = I->getParent();
- BasicBlock *EarliestBB = EarliestCapture->getParent();
- if (DT.dominates(EarliestBB, CurrentBB)) {
- // EarliestCapture already comes before the current use.
- } else if (DT.dominates(CurrentBB, EarliestBB)) {
- EarliestCapture = I;
- } else {
- // Otherwise find the nearest common dominator and use its terminator.
- auto *NearestCommonDom =
- DT.findNearestCommonDominator(CurrentBB, EarliestBB);
- EarliestCapture = NearestCommonDom->getTerminator();
- }
- }
+ else
+ EarliestCapture = DT.findNearestCommonDominator(EarliestCapture, I);
Captured = true;
// Return false to continue analysis; we need to see all potential