[llvm] r368927 - [Attributor][NFC] Introduce statistics macros for new positions

Johannes Doerfert via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 14 14:46:25 PDT 2019


Author: jdoerfert
Date: Wed Aug 14 14:46:25 2019
New Revision: 368927

URL: http://llvm.org/viewvc/llvm-project?rev=368927&view=rev
Log:
[Attributor][NFC] Introduce statistics macros for new positions

Modified:
    llvm/trunk/lib/Transforms/IPO/Attributor.cpp

Modified: llvm/trunk/lib/Transforms/IPO/Attributor.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/Attributor.cpp?rev=368927&r1=368926&r2=368927&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/IPO/Attributor.cpp (original)
+++ llvm/trunk/lib/Transforms/IPO/Attributor.cpp Wed Aug 14 14:46:25 2019
@@ -58,13 +58,13 @@ STATISTIC(NumAttributesManifested,
 //
 // Usage:
 // For simple IR attribute tracking overload trackStatistics in the abstract
-// attribute and choose the right STATS_DECL_AND_TRACK_********* macro,
+// attribute and choose the right STATS_DECLTRACK_********* macro,
 // e.g.,:
 //  void trackStatistics() const override {
-//    STATS_DECL_AND_TRACK_ARG_ATTR(returned)
+//    STATS_DECLTRACK_ARG_ATTR(returned)
 //  }
 // If there is a single "increment" side one can use the macro
-// STATS_DECL_AND_TRACK with a custom message. If there are multiple increment
+// STATS_DECLTRACK with a custom message. If there are multiple increment
 // sides, STATS_DECL and STATS_TRACK can also be used separatly.
 //
 #define BUILD_STAT_MSG_IR_ATTR(TYPE, NAME)                                     \
@@ -72,19 +72,27 @@ STATISTIC(NumAttributesManifested,
 #define BUILD_STAT_NAME(NAME, TYPE) NumIR##TYPE##_##NAME
 #define STATS_DECL(NAME, TYPE, MSG) STATISTIC(BUILD_STAT_NAME(NAME, TYPE), MSG);
 #define STATS_TRACK(NAME, TYPE) ++(BUILD_STAT_NAME(NAME, TYPE));
-#define STATS_DECL_AND_TRACK(NAME, TYPE, MSG)                                  \
+#define STATS_DECLTRACK(NAME, TYPE, MSG)                                       \
   STATS_DECL(NAME, TYPE, MSG)                                                  \
   STATS_TRACK(NAME, TYPE)
-#define STATS_DECL_AND_TRACK_ARG_ATTR(NAME)                                    \
-  STATS_DECL_AND_TRACK(NAME, Arguments, BUILD_STAT_MSG_IR_ATTR(arguments, NAME))
-#define STATS_DECL_AND_TRACK_CSARG_ATTR(NAME)                                  \
-  STATS_DECL_AND_TRACK(NAME, CSArguments,                                      \
-                       BUILD_STAT_MSG_IR_ATTR(call site arguments, NAME))
-#define STATS_DECL_AND_TRACK_FN_ATTR(NAME)                                     \
-  STATS_DECL_AND_TRACK(NAME, Function, BUILD_STAT_MSG_IR_ATTR(functions, NAME))
-#define STATS_DECL_AND_TRACK_FNRET_ATTR(NAME)                                  \
-  STATS_DECL_AND_TRACK(NAME, FunctionReturn,                                   \
-                       BUILD_STAT_MSG_IR_ATTR(function returns, NAME));
+#define STATS_DECLTRACK_ARG_ATTR(NAME)                                         \
+  STATS_DECLTRACK(NAME, Arguments, BUILD_STAT_MSG_IR_ATTR(arguments, NAME))
+#define STATS_DECLTRACK_CSARG_ATTR(NAME)                                       \
+  STATS_DECLTRACK(NAME, CSArguments,                                           \
+                  BUILD_STAT_MSG_IR_ATTR(call site arguments, NAME))
+#define STATS_DECLTRACK_FN_ATTR(NAME)                                          \
+  STATS_DECLTRACK(NAME, Function, BUILD_STAT_MSG_IR_ATTR(functions, NAME))
+#define STATS_DECLTRACK_CS_ATTR(NAME)                                          \
+  STATS_DECLTRACK(NAME, CS, BUILD_STAT_MSG_IR_ATTR(call site, NAME))
+#define STATS_DECLTRACK_FNRET_ATTR(NAME)                                       \
+  STATS_DECLTRACK(NAME, FunctionReturn,                                        \
+                  BUILD_STAT_MSG_IR_ATTR(function returns, NAME));
+#define STATS_DECLTRACK_CSRET_ATTR(NAME)                                       \
+  STATS_DECLTRACK(NAME, CSReturn,                                              \
+                  BUILD_STAT_MSG_IR_ATTR(call site returns, NAME))
+#define STATS_DECLTRACK_FLOATING_ATTR(NAME)                                    \
+  STATS_DECLTRACK(NAME, Floating,                                              \
+                  ("Number of floating values known to be '" #NAME "'"))
 
 // TODO: Determine a good default value.
 //
@@ -459,9 +467,7 @@ struct AANoUnwindFunction final : public
   AANoUnwindFunction(const IRPosition &IRP) : AANoUnwindImpl(IRP) {}
 
   /// See AbstractAttribute::trackStatistics()
-  void trackStatistics() const override {
-    STATS_DECL_AND_TRACK_FN_ATTR(nounwind)
-  }
+  void trackStatistics() const override { STATS_DECLTRACK_FN_ATTR(nounwind) }
 };
 
 ChangeStatus AANoUnwindImpl::updateImpl(Attributor &A) {
@@ -607,8 +613,8 @@ ChangeStatus AAReturnedValuesImpl::manif
 
   // Bookkeeping.
   assert(isValidState());
-  STATS_DECL_AND_TRACK(KnownReturnValues, FunctionReturn,
-                       "Number of function with known return values");
+  STATS_DECLTRACK(KnownReturnValues, FunctionReturn,
+                  "Number of function with known return values");
 
   // Check if we have an assumed unique return value that we could manifest.
   Optional<Value *> UniqueRV = getAssumedUniqueReturnValue(A);
@@ -617,8 +623,8 @@ ChangeStatus AAReturnedValuesImpl::manif
     return Changed;
 
   // Bookkeeping.
-  STATS_DECL_AND_TRACK(UniqueReturnValue, FunctionReturn,
-                       "Number of function with unique return");
+  STATS_DECLTRACK(UniqueReturnValue, FunctionReturn,
+                  "Number of function with unique return");
 
   // If the assumed unique return value is an argument, annotate it.
   if (auto *UniqueRVArg = dyn_cast<Argument>(UniqueRV.getValue())) {
@@ -818,9 +824,7 @@ struct AAReturnedValuesFunction final :
   AAReturnedValuesFunction(const IRPosition &IRP) : AAReturnedValuesImpl(IRP) {}
 
   /// See AbstractAttribute::trackStatistics()
-  void trackStatistics() const override {
-    STATS_DECL_AND_TRACK_ARG_ATTR(returned)
-  }
+  void trackStatistics() const override { STATS_DECLTRACK_ARG_ATTR(returned) }
 };
 
 /// ------------------------ NoSync Function Attribute -------------------------
@@ -852,7 +856,7 @@ struct AANoSyncFunction final : public A
   AANoSyncFunction(const IRPosition &IRP) : AANoSyncImpl(IRP) {}
 
   /// See AbstractAttribute::trackStatistics()
-  void trackStatistics() const override { STATS_DECL_AND_TRACK_FN_ATTR(nosync) }
+  void trackStatistics() const override { STATS_DECLTRACK_FN_ATTR(nosync) }
 };
 
 bool AANoSyncImpl::isNonRelaxedAtomic(Instruction *I) {
@@ -1005,7 +1009,7 @@ struct AANoFreeFunction final : public A
   AANoFreeFunction(const IRPosition &IRP) : AANoFreeImpl(IRP) {}
 
   /// See AbstractAttribute::trackStatistics()
-  void trackStatistics() const override { STATS_DECL_AND_TRACK_FN_ATTR(nofree) }
+  void trackStatistics() const override { STATS_DECLTRACK_FN_ATTR(nofree) }
 };
 
 ChangeStatus AANoFreeImpl::updateImpl(Attributor &A) {
@@ -1081,9 +1085,7 @@ struct AANonNullReturned final : AANonNu
   ChangeStatus updateImpl(Attributor &A) override;
 
   /// See AbstractAttribute::trackStatistics()
-  void trackStatistics() const override {
-    STATS_DECL_AND_TRACK_FNRET_ATTR(nonnull)
-  }
+  void trackStatistics() const override { STATS_DECLTRACK_FNRET_ATTR(nonnull) }
 };
 
 ChangeStatus AANonNullReturned::updateImpl(Attributor &A) {
@@ -1104,9 +1106,7 @@ struct AANonNullArgument final : AANonNu
   ChangeStatus updateImpl(Attributor &A) override;
 
   /// See AbstractAttribute::trackStatistics()
-  void trackStatistics() const override {
-    STATS_DECL_AND_TRACK_ARG_ATTR(nonnull)
-  }
+  void trackStatistics() const override { STATS_DECLTRACK_ARG_ATTR(nonnull) }
 };
 
 /// NonNull attribute for a call site argument.
@@ -1125,9 +1125,7 @@ struct AANonNullCallSiteArgument final :
   ChangeStatus updateImpl(Attributor &A) override;
 
   /// See AbstractAttribute::trackStatistics()
-  void trackStatistics() const override {
-    STATS_DECL_AND_TRACK_CSARG_ATTR(nonnull)
-  }
+  void trackStatistics() const override { STATS_DECLTRACK_CSARG_ATTR(nonnull) }
 };
 
 ChangeStatus AANonNullArgument::updateImpl(Attributor &A) {
@@ -1194,9 +1192,7 @@ struct AAWillReturnFunction final : AAWi
   ChangeStatus updateImpl(Attributor &A) override;
 
   /// See AbstractAttribute::trackStatistics()
-  void trackStatistics() const override {
-    STATS_DECL_AND_TRACK_FN_ATTR(willreturn)
-  }
+  void trackStatistics() const override { STATS_DECLTRACK_FN_ATTR(norecurse) }
 };
 
 // Helper function that checks whether a function has any cycle.
@@ -1284,9 +1280,7 @@ struct AANoAliasReturned final : AANoAli
   virtual ChangeStatus updateImpl(Attributor &A) override;
 
   /// See AbstractAttribute::trackStatistics()
-  void trackStatistics() const override {
-    STATS_DECL_AND_TRACK_FNRET_ATTR(noalias)
-  }
+  void trackStatistics() const override { STATS_DECLTRACK_FNRET_ATTR(noalias) }
 };
 
 ChangeStatus AANoAliasReturned::updateImpl(Attributor &A) {
@@ -1753,7 +1747,7 @@ struct AADereferenceableReturned final :
 
   /// See AbstractAttribute::trackStatistics()
   void trackStatistics() const override {
-    STATS_DECL_AND_TRACK_FNRET_ATTR(dereferenceable)
+    STATS_DECLTRACK_FNRET_ATTR(dereferenceable)
   }
 };
 
@@ -1832,7 +1826,7 @@ struct AADereferenceableArgument final :
 
   /// See AbstractAttribute::trackStatistics()
   void trackStatistics() const override {
-    STATS_DECL_AND_TRACK_ARG_ATTR(dereferenceable)
+    STATS_DECLTRACK_ARG_ATTR(dereferenceable)
   }
 };
 
@@ -1887,7 +1881,7 @@ struct AADereferenceableCallSiteArgument
 
   /// See AbstractAttribute::trackStatistics()
   void trackStatistics() const override {
-    STATS_DECL_AND_TRACK_CSARG_ATTR(dereferenceable)
+    STATS_DECLTRACK_CSARG_ATTR(dereferenceable)
   }
 };
 
@@ -1950,9 +1944,7 @@ struct AAAlignReturned final : AAAlignIm
   ChangeStatus updateImpl(Attributor &A) override;
 
   /// See AbstractAttribute::trackStatistics()
-  void trackStatistics() const override {
-    STATS_DECL_AND_TRACK_FNRET_ATTR(aligned)
-  }
+  void trackStatistics() const override { STATS_DECLTRACK_FNRET_ATTR(aligned) }
 };
 
 ChangeStatus AAAlignReturned::updateImpl(Attributor &A) {
@@ -1991,7 +1983,7 @@ struct AAAlignArgument final : AAAlignIm
   virtual ChangeStatus updateImpl(Attributor &A) override;
 
   /// See AbstractAttribute::trackStatistics()
-  void trackStatistics() const override{STATS_DECL_AND_TRACK_ARG_ATTR(aligned)};
+  void trackStatistics() const override{STATS_DECLTRACK_ARG_ATTR(aligned)};
 };
 
 ChangeStatus AAAlignArgument::updateImpl(Attributor &A) {
@@ -2044,9 +2036,7 @@ struct AAAlignCallSiteArgument final : A
   ChangeStatus updateImpl(Attributor &A) override;
 
   /// See AbstractAttribute::trackStatistics()
-  void trackStatistics() const override {
-    STATS_DECL_AND_TRACK_CSARG_ATTR(aligned)
-  }
+  void trackStatistics() const override { STATS_DECLTRACK_CSARG_ATTR(aligned) }
 };
 
 ChangeStatus AAAlignCallSiteArgument::updateImpl(Attributor &A) {
@@ -2096,9 +2086,7 @@ struct AANoReturnFunction final : AANoRe
   AANoReturnFunction(const IRPosition &IRP) : AANoReturnImpl(IRP) {}
 
   /// See AbstractAttribute::trackStatistics()
-  void trackStatistics() const override {
-    STATS_DECL_AND_TRACK_FN_ATTR(noreturn)
-  }
+  void trackStatistics() const override { STATS_DECLTRACK_FN_ATTR(noreturn) }
 };
 
 /// ----------------------------------------------------------------------------




More information about the llvm-commits mailing list