forked from OSchip/llvm-project
[CSSPGO] Avoid deleting probe instruction in FoldValueComparisonIntoPredecessors
This change tries to fix a place missing `moveAndDanglePseudoProbes `. In FoldValueComparisonIntoPredecessors, it folds the BB into predecessors and then marked the BB unreachable. However, the original logic from the BB is still alive, deleting the probe will mislead the SampleLoader mark it as zero count sample. Reviewed By: hoy, wenlei Differential Revision: https://reviews.llvm.org/D102721
This commit is contained in:
parent
d38057f3ec
commit
6539a80bc9
|
@ -1325,6 +1325,10 @@ bool SimplifyCFGOpt::PerformValueComparisonIntoPredecessorFolding(
|
|||
DTU->applyUpdates(Updates);
|
||||
}
|
||||
|
||||
// Here the BB is not a dead block but folded into its predecessors, so move
|
||||
// the probe and mark it as dangling.
|
||||
moveAndDanglePseudoProbes(BB, NewSI);
|
||||
|
||||
++NumFoldValueComparisonIntoPredecessors;
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
; Test after FoldValueComparisonIntoPredecessors, one dangling probe is generated
|
||||
; RUN: opt -S -passes='pseudo-probe,simplifycfg' < %s | FileCheck %s
|
||||
|
||||
|
||||
; CHECK: if.end80: ; preds = %if.end
|
||||
; CHECK-NEXT: call void @llvm.pseudoprobe(i64 -2281696412744416103, i64 3, i32 0, i64 -1)
|
||||
; CHECK-NEXT: call void @llvm.pseudoprobe(i64 -2281696412744416103, i64 4, i32 2, i64 -1)
|
||||
|
||||
define dso_local i32 @readCBPandCoeffsFromNAL(i1 %c, i32 %x, i32 %y) local_unnamed_addr {
|
||||
;
|
||||
if.end:
|
||||
br i1 %c, label %if.end80, label %if.then64
|
||||
|
||||
if.then64: ; preds = %if.end
|
||||
ret i32 %y
|
||||
|
||||
if.end80: ; preds = %if.end
|
||||
switch i32 %x, label %lor.lhs.false89 [
|
||||
i32 10, label %if.end172237
|
||||
i32 14, label %if.end172237
|
||||
i32 9, label %if.end172
|
||||
]
|
||||
|
||||
lor.lhs.false89: ; preds = %lor.lhs.false89, %if.end80
|
||||
%cmp91 = icmp eq i32 %x, 12
|
||||
br i1 %cmp91, label %if.end172, label %lor.lhs.false89
|
||||
|
||||
if.end172: ; preds = %lor.lhs.false89, %if.end80
|
||||
br label %if.end239
|
||||
|
||||
if.end172237: ; preds = %if.end80, %if.end80
|
||||
br label %if.end239
|
||||
|
||||
if.end239: ; preds = %if.end172237, %if.end172
|
||||
%cbp.0 = phi i32 [ 1, %if.end172237 ], [ 0, %if.end172 ]
|
||||
ret i32 %cbp.0
|
||||
}
|
Loading…
Reference in New Issue