[PATCH] D73920: [BFI] Add a debug check for unknown block queries.
Hiroshi Yamauchi via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 4 10:12:40 PST 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG803dd6fe6bb4: [BFI] Add a debug check for unknown block queries. (authored by yamauchi).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D73920/new/
https://reviews.llvm.org/D73920
Files:
llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h
llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp
Index: llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp
===================================================================
--- llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp
+++ llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp
@@ -40,6 +40,12 @@
#define DEBUG_TYPE "block-freq"
+cl::opt<bool> CheckBFIUnknownBlockQueries(
+ "check-bfi-unknown-block-queries",
+ cl::init(false), cl::Hidden,
+ cl::desc("Check if block frequency is queried for an unknown block "
+ "for debugging missed BFI updates"));
+
ScaledNumber<uint64_t> BlockMass::toScaled() const {
if (isFull())
return ScaledNumber<uint64_t>(1, 0);
@@ -550,8 +556,17 @@
BlockFrequency
BlockFrequencyInfoImplBase::getBlockFreq(const BlockNode &Node) const {
- if (!Node.isValid())
+ if (!Node.isValid()) {
+#ifndef NDEBUG
+ if (CheckBFIUnknownBlockQueries) {
+ SmallString<256> Msg;
+ raw_svector_ostream OS(Msg);
+ OS << "*** Detected BFI query for unknown block " << getBlockName(Node);
+ report_fatal_error(OS.str());
+ }
+#endif
return 0;
+ }
return Freqs[Node.Index].Integer;
}
Index: llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h
===================================================================
--- llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h
+++ llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h
@@ -26,6 +26,7 @@
#include "llvm/IR/BasicBlock.h"
#include "llvm/Support/BlockFrequency.h"
#include "llvm/Support/BranchProbability.h"
+#include "llvm/Support/CommandLine.h"
#include "llvm/Support/DOTGraphTraits.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
@@ -46,6 +47,8 @@
#define DEBUG_TYPE "block-freq"
+extern llvm::cl::opt<bool> CheckBFIUnknownBlockQueries;
+
namespace llvm {
class BranchProbabilityInfo;
@@ -1043,6 +1046,15 @@
computeMassInFunction();
unwrapLoops();
finalizeMetrics();
+
+ if (CheckBFIUnknownBlockQueries) {
+ // To detect BFI queries for unknown blocks, add entries for unreachable
+ // blocks, if any. This is to distinguish between known/existing unreachable
+ // blocks and unknown blocks.
+ for (const BlockT &BB : F)
+ if (!Nodes.count(&BB))
+ setBlockFreq(&BB, 0);
+ }
}
template <class BT>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D73920.242366.patch
Type: text/x-patch
Size: 2256 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200204/037d8c07/attachment.bin>
More information about the llvm-commits
mailing list