[llvm] 3f7aa04 - [nfc] Fix RTTI for `InstrProf` intrinsics (#83511)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 5 21:11:03 PST 2024
Author: Mircea Trofin
Date: 2024-03-05T21:10:59-08:00
New Revision: 3f7aa042b657671319f994ad3fb7c3eb79a6fe00
URL: https://github.com/llvm/llvm-project/commit/3f7aa042b657671319f994ad3fb7c3eb79a6fe00
DIFF: https://github.com/llvm/llvm-project/commit/3f7aa042b657671319f994ad3fb7c3eb79a6fe00.diff
LOG: [nfc] Fix RTTI for `InstrProf` intrinsics (#83511)
Added:
Modified:
llvm/include/llvm/IR/IntrinsicInst.h
Removed:
################################################################################
diff --git a/llvm/include/llvm/IR/IntrinsicInst.h b/llvm/include/llvm/IR/IntrinsicInst.h
index fbaaef8ea44315..c07b83a81a63e1 100644
--- a/llvm/include/llvm/IR/IntrinsicInst.h
+++ b/llvm/include/llvm/IR/IntrinsicInst.h
@@ -1429,7 +1429,35 @@ class VACopyInst : public IntrinsicInst {
/// A base class for all instrprof intrinsics.
class InstrProfInstBase : public IntrinsicInst {
+protected:
+ static bool isCounterBase(const IntrinsicInst &I) {
+ switch (I.getIntrinsicID()) {
+ case Intrinsic::instrprof_cover:
+ case Intrinsic::instrprof_increment:
+ case Intrinsic::instrprof_increment_step:
+ case Intrinsic::instrprof_timestamp:
+ case Intrinsic::instrprof_value_profile:
+ return true;
+ }
+ return false;
+ }
+ static bool isMCDCBitmapBase(const IntrinsicInst &I) {
+ switch (I.getIntrinsicID()) {
+ case Intrinsic::instrprof_mcdc_parameters:
+ case Intrinsic::instrprof_mcdc_tvbitmap_update:
+ return true;
+ }
+ return false;
+ }
+
public:
+ static bool classof(const Value *V) {
+ if (const auto *Instr = dyn_cast<IntrinsicInst>(V))
+ return isCounterBase(*Instr) || isMCDCBitmapBase(*Instr) ||
+ Instr->getIntrinsicID() ==
+ Intrinsic::instrprof_mcdc_condbitmap_update;
+ return false;
+ }
// The name of the instrumented function.
GlobalVariable *getName() const {
return cast<GlobalVariable>(
@@ -1444,6 +1472,12 @@ class InstrProfInstBase : public IntrinsicInst {
/// A base class for all instrprof counter intrinsics.
class InstrProfCntrInstBase : public InstrProfInstBase {
public:
+ static bool classof(const Value *V) {
+ if (const auto *Instr = dyn_cast<IntrinsicInst>(V))
+ return InstrProfInstBase::isCounterBase(*Instr);
+ return false;
+ }
+
// The number of counters for the instrumented function.
ConstantInt *getNumCounters() const;
// The index of the counter that this instruction acts on.
@@ -1524,8 +1558,7 @@ class InstrProfValueProfileInst : public InstrProfCntrInstBase {
class InstrProfMCDCBitmapInstBase : public InstrProfInstBase {
public:
static bool classof(const IntrinsicInst *I) {
- return I->getIntrinsicID() == Intrinsic::instrprof_mcdc_parameters ||
- I->getIntrinsicID() == Intrinsic::instrprof_mcdc_tvbitmap_update;
+ return InstrProfInstBase::isMCDCBitmapBase(*I);
}
static bool classof(const Value *V) {
return isa<IntrinsicInst>(V) && classof(cast<IntrinsicInst>(V));
More information about the llvm-commits
mailing list