[PATCH] D111682: [TableGen][PGO] Disable profile instrumentation for printInstruction function

Rong Xu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 13 15:44:08 PDT 2021


xur updated this revision to Diff 379537.
xur added a comment.
Herald added a subscriber: dexonsmith.

Reid: thanks for pointing out the error for MSC. I move the Macro definition to compiler.h.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D111682/new/

https://reviews.llvm.org/D111682

Files:
  llvm/include/llvm/Support/Compiler.h
  llvm/utils/TableGen/AsmWriterEmitter.cpp


Index: llvm/utils/TableGen/AsmWriterEmitter.cpp
===================================================================
--- llvm/utils/TableGen/AsmWriterEmitter.cpp
+++ llvm/utils/TableGen/AsmWriterEmitter.cpp
@@ -457,9 +457,14 @@
   StringRef ClassName = AsmWriter->getValueAsString("AsmWriterClassName");
   bool PassSubtarget = AsmWriter->getValueAsInt("PassSubtarget");
 
+  // This function has some huge switch statements that causing excessive
+  // compile time in LLVM profile instrumenation build. This print function
+  // usually is not frequently called in compilation. Here we disable the
+  // profile instrumenation for this function.
   O << "/// printInstruction - This method is automatically generated by "
        "tablegen\n"
        "/// from the instruction set description.\n"
+       "LLVM_NO_PROFILE_INSTRUMENT_FUNCTION\n"
        "void "
     << Target.getName() << ClassName
     << "::printInstruction(const MCInst *MI, uint64_t Address, "
Index: llvm/include/llvm/Support/Compiler.h
===================================================================
--- llvm/include/llvm/Support/Compiler.h
+++ llvm/include/llvm/Support/Compiler.h
@@ -555,4 +555,13 @@
 #define LLVM_ENABLE_EXCEPTIONS 1
 #endif
 
+/// \macro LLVM_NO_PROFILE_INSTRUMENT_FUNCTION
+/// Disable the profile instrument for a function.
+#if __has_attribute(no_profile_instrument_function) && defined(__GNUC__)
+#define LLVM_NO_PROFILE_INSTRUMENT_FUNCTION                                    \
+  __attribute__((no_profile_instrument_function))
+#else
+#define LLVM_NO_PROFILE_INSTRUMENT_FUNCTION
+#endif
+
 #endif


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D111682.379537.patch
Type: text/x-patch
Size: 1602 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211013/2d2af496/attachment.bin>


More information about the llvm-commits mailing list