Move verbosity check for remarks to the diag handler

Test needs some slight adjustment because we no longer check the existence of
BFI but rather that the actual hotness is set on the remark.  If entry_count
is not set getBlockProfileCount returns None.

llvm-svn: 314874
This commit is contained in:
Adam Nemet 2017-10-04 04:26:23 +00:00
parent 28c2c22624
commit f31b1f310c
3 changed files with 10 additions and 8 deletions

View File

@ -169,10 +169,7 @@ void OptimizationRemarkEmitter::emit(
auto *P = &OptDiagBase;
*Out << P;
}
// FIXME: now that IsVerbose is part of DI, filtering for this will be moved
// from here to clang.
if (!OptDiag.isVerbose() || shouldEmitVerbose())
F->getContext().diagnose(OptDiag);
F->getContext().diagnose(OptDiag);
}
OptimizationRemarkEmitterWrapperPass::OptimizationRemarkEmitterWrapperPass()

View File

@ -199,8 +199,12 @@ static bool isDiagnosticEnabled(const DiagnosticInfo &DI) {
// pattern, passed via one of the -pass-remarks* flags, matches the name of
// the pass that is emitting the diagnostic. If there is no match, ignore the
// diagnostic and return.
//
// Also noisy remarks are only enabled if we have hotness information to sort
// them.
if (auto *Remark = dyn_cast<DiagnosticInfoOptimizationBase>(&DI))
return Remark->isEnabled();
return Remark->isEnabled() &&
(!Remark->isVerbose() || Remark->getHotness());
return true;
}

View File

@ -20,7 +20,7 @@
; CHECK: foz not inlined into bar because it should never be inlined (cost=never)
; Function Attrs: alwaysinline nounwind uwtable
define i32 @foo(i32 %x, i32 %y) #0 {
define i32 @foo(i32 %x, i32 %y) #0 !prof !1 {
entry:
%x.addr = alloca i32, align 4
%y.addr = alloca i32, align 4
@ -33,7 +33,7 @@ entry:
}
; Function Attrs: noinline nounwind uwtable
define float @foz(i32 %x, i32 %y) #1 {
define float @foz(i32 %x, i32 %y) #1 !prof !1 {
entry:
%x.addr = alloca i32, align 4
%y.addr = alloca i32, align 4
@ -49,7 +49,7 @@ entry:
declare i32 @fox()
; Function Attrs: nounwind uwtable
define i32 @bar(i32 %j) #2 {
define i32 @bar(i32 %j) #2 !prof !1 {
entry:
%j.addr = alloca i32, align 4
store i32 %j, i32* %j.addr, align 4
@ -76,3 +76,4 @@ attributes #2 = { nounwind uwtable "less-precise-fpmad"="false" "no-frame-pointe
!llvm.ident = !{!0}
!0 = !{!"clang version 3.5.0 "}
!1 = !{!"function_entry_count", i64 10}