Set isRequired true for CFGViewer/CFGPrinter passes
authorWenju He <wenju.he@intel.com>
Wed, 7 Jun 2023 06:12:22 +0000 (14:12 +0800)
committerBing1 Yu <bing1.yu@intel.com>
Wed, 7 Jun 2023 06:20:27 +0000 (14:20 +0800)
This PR allows function's cfg to be viewed/printed even if the function
has optnone attribute.

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D152122

llvm/include/llvm/Analysis/CFGPrinter.h
llvm/test/Other/cfg-printer-filter.ll

index eeac11b..8c4c0c3 100644 (file)
@@ -35,21 +35,25 @@ template <class GraphType> struct GraphTraits;
 class CFGViewerPass : public PassInfoMixin<CFGViewerPass> {
 public:
   PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
+  static bool isRequired() { return true; }
 };
 
 class CFGOnlyViewerPass : public PassInfoMixin<CFGOnlyViewerPass> {
 public:
   PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
+  static bool isRequired() { return true; }
 };
 
 class CFGPrinterPass : public PassInfoMixin<CFGPrinterPass> {
 public:
   PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
+  static bool isRequired() { return true; }
 };
 
 class CFGOnlyPrinterPass : public PassInfoMixin<CFGOnlyPrinterPass> {
 public:
   PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
+  static bool isRequired() { return true; }
 };
 
 class DOTFuncInfo {
index 4ec6b73..2a25c46 100644 (file)
@@ -1,6 +1,8 @@
 ; RUN: rm -f %t.other.dot %t-only.other.dot
 
 ;; Both f and func are dumped because their names contain the pattern 'f' as a substring.
+;; Also checks dot-cfg pass runs on func which has optnone attribute.
+
 ; RUN: opt < %s -passes=dot-cfg -cfg-dot-filename-prefix=%t -cfg-func-name=f 2>/dev/null > /dev/null
 ; RUN: FileCheck %s -input-file=%t.f.dot -check-prefix=F
 ; RUN: FileCheck %s -input-file=%t.func.dot -check-prefix=Func
@@ -23,7 +25,7 @@ exit:                   ; preds = %entry, %if
 }
 
 ; Func: digraph "CFG for 'func' function"
-define void @func(i32) {
+define void @func(i32) optnone noinline {
 entry:
   %check = icmp sgt i32 %0, 0
   br label %exit