[llvm] Revert "[Remarks] Introduce count subcommand for llvm-remarkutil. (#6… (PR #68905)
Ramkumar Ramachandra via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 12 08:53:00 PDT 2023
https://github.com/artagnon created https://github.com/llvm/llvm-project/pull/68905
…6214)"
This reverts commit 31c2cf1136179da2bd179d28ea632bd73f5c0ea9, as it results in a broken LLVM build.
>From e92a1c5619dbfbeed9010d70de1eaefe23d35bf8 Mon Sep 17 00:00:00 2001
From: Ramkumar Ramachandra <Ramkumar.Ramachandra at imgtec.com>
Date: Thu, 12 Oct 2023 16:50:52 +0100
Subject: [PATCH] Revert "[Remarks] Introduce count subcommand for
llvm-remarkutil. (#66214)"
This reverts commit 31c2cf1136179da2bd179d28ea632bd73f5c0ea9, as it
results in a broken LLVM build.
---
llvm/docs/CommandGuide/llvm-remarkutil.rst | 74 ----
llvm/include/llvm/Remarks/Remark.h | 4 -
llvm/lib/Remarks/Remark.cpp | 11 -
.../annotation-count-with-dbg-loc.test | 7 -
.../llvm-remarkutil/annotation-count.test | 7 -
.../broken-bitstream-remark.test | 2 -
.../llvm-remarkutil/broken-yaml-remark.test | 2 -
.../count/Inputs/remark-count-by.yaml | 43 ---
.../count/Inputs/remark-filter-by.yaml | 40 ---
.../count/Inputs/remark-group-by.yaml | 54 ---
.../llvm-remarkutil/count/count-by-keys.test | 20 --
.../count/count-by-remark.test | 20 --
.../count/filter-by-pass-name.test | 10 -
.../count/filter-by-remark-name.test | 10 -
.../llvm-remarkutil/count/filter-by-type.test | 16 -
.../count/group-by-function-with-loc.test | 7 -
.../count/group-by-function.test | 7 -
.../count/group-by-source.test | 6 -
.../tools/llvm-remarkutil/empty-file.test | 5 -
.../instruction-count-with-dbg-loc.test | 7 -
.../llvm-remarkutil/instruction-count.test | 7 -
llvm/tools/llvm-remarkutil/CMakeLists.txt | 1 -
llvm/tools/llvm-remarkutil/RemarkCounter.cpp | 337 ------------------
llvm/tools/llvm-remarkutil/RemarkCounter.h | 217 -----------
24 files changed, 914 deletions(-)
delete mode 100644 llvm/test/tools/llvm-remarkutil/count/Inputs/remark-count-by.yaml
delete mode 100644 llvm/test/tools/llvm-remarkutil/count/Inputs/remark-filter-by.yaml
delete mode 100644 llvm/test/tools/llvm-remarkutil/count/Inputs/remark-group-by.yaml
delete mode 100644 llvm/test/tools/llvm-remarkutil/count/count-by-keys.test
delete mode 100644 llvm/test/tools/llvm-remarkutil/count/count-by-remark.test
delete mode 100644 llvm/test/tools/llvm-remarkutil/count/filter-by-pass-name.test
delete mode 100644 llvm/test/tools/llvm-remarkutil/count/filter-by-remark-name.test
delete mode 100644 llvm/test/tools/llvm-remarkutil/count/filter-by-type.test
delete mode 100644 llvm/test/tools/llvm-remarkutil/count/group-by-function-with-loc.test
delete mode 100644 llvm/test/tools/llvm-remarkutil/count/group-by-function.test
delete mode 100644 llvm/test/tools/llvm-remarkutil/count/group-by-source.test
delete mode 100644 llvm/tools/llvm-remarkutil/RemarkCounter.cpp
delete mode 100644 llvm/tools/llvm-remarkutil/RemarkCounter.h
diff --git a/llvm/docs/CommandGuide/llvm-remarkutil.rst b/llvm/docs/CommandGuide/llvm-remarkutil.rst
index 2e4953eb188ae7b..d13a51707a93c58 100644
--- a/llvm/docs/CommandGuide/llvm-remarkutil.rst
+++ b/llvm/docs/CommandGuide/llvm-remarkutil.rst
@@ -110,80 +110,6 @@ if `--use-debug-loc` is passed then the CSV will include the source path, line n
Source,Function,Count
path:line:column,foo,3
-.. _count_subcommand:
-
-count
-~~~~~
-
-..program:: llvm-remarkutil count
-
-USAGE: :program:`llvm-remarkutil` count [*options*] <input file>
-
-Summary
-^^^^^^^
-
-:program:`llvm-remarkutil count` counts `remarks <https://llvm.org/docs/Remarks.html>` based on specified properties.
-By default the tool counts remarks based on how many occour in a source file or function or total for the generated remark file.
-The tool also supports collecting count based on specific remark arguments. The specified arguments should have an integer value to be able to report a count.
-
-The tool contains utilities to filter the remark count based on remark name, pass name, argument value and remark type.
-OPTIONS
--------
-
-.. option:: --parser=<yaml|bitstream>
-
- Select the type of input remark parser. Required.
- * ``yaml``: The tool will parse YAML remarks.
- * ``bitstream``: The tool will parse bitstream remarks.
-
-.. option:: --count-by<value>
- Select option to collect remarks by.
- * ``remark-name``: count how many individual remarks exist.
- * ``arg``: count remarks based on specified arguments passed by --(r)args. The argument value must be a number.
-
-.. option:: --group-by=<value>
- group count of remarks by property.
- * ``source``: Count will be collected per source path. Remarks with no debug location will not be counted.
- * ``function``: Count is collected per function.
- * ``function-with-loc``: Count is collected per function per source. Remarks with no debug location will not be counted.
- * ``Total``: Report a count for the provided remark file.
-
-.. option:: --args[=arguments]
- If `count-by` is set to `arg` this flag can be used to collect from specified remark arguments represented as a comma seperated string.
- The arguments must have a numeral value to be able to count remarks by
-
-.. option:: --rargs[=arguments]
- If `count-by` is set to `arg` this flag can be used to collect from specified remark arguments using regular expression.
- The arguments must have a numeral value to be able to count remarks by
-
-.. option:: --pass-name[=<string>]
- Filter count by pass name.
-
-.. option:: --rpass-name[=<string>]
- Filter count by pass name using regular expressions.
-
-.. option:: --remark-name[=<string>]
- Filter count by remark name.
-
-.. option:: --rremark-name[=<string>]
- Filter count by remark name using regular expressions.
-
-.. option:: --filter-arg-by[=<string>]
- Filter count by argument value.
-
-.. option:: --rfilter-arg-by[=<string>]
- Filter count by argument value using regular expressions.
-
-.. option:: --remark-type=<value>
- Filter remarks by type with the following options.
- * ``unknown``
- * ``passed``
- * ``missed``
- * ``analysis``
- * ``analysis-fp-commute``
- * ``analysis-aliasing``
- * ``failure``
-
.. _size-diff_subcommand:
size-diff
diff --git a/llvm/include/llvm/Remarks/Remark.h b/llvm/include/llvm/Remarks/Remark.h
index de81c5a992805b4..a66f7ed73f2f507 100644
--- a/llvm/include/llvm/Remarks/Remark.h
+++ b/llvm/include/llvm/Remarks/Remark.h
@@ -52,10 +52,6 @@ struct Argument {
/// Implement operator<< on Argument.
void print(raw_ostream &OS) const;
- /// Return the value of argument as int.
- std::optional<int> getValAsInt() const;
- /// Check if the argument value can be parsed as int.
- bool isValInt() const;
};
// Create wrappers for C Binding types (see CBindingWrapping.h).
diff --git a/llvm/lib/Remarks/Remark.cpp b/llvm/lib/Remarks/Remark.cpp
index ef42271a3c8da6f..1b248db41747ed0 100644
--- a/llvm/lib/Remarks/Remark.cpp
+++ b/llvm/lib/Remarks/Remark.cpp
@@ -11,7 +11,6 @@
//===----------------------------------------------------------------------===//
#include "llvm/Remarks/Remark.h"
-#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include <optional>
@@ -26,16 +25,6 @@ std::string Remark::getArgsAsMsg() const {
return OS.str();
}
-/// Returns the value of a specified key parsed from StringRef.
-std::optional<int> Argument::getValAsInt() const {
- APInt KeyVal;
- if (Val.getAsInteger(10, KeyVal))
- return std::nullopt;
- return KeyVal.getSExtValue();
-}
-
-bool Argument::isValInt() const { return getValAsInt().has_value(); }
-
void RemarkLocation::print(raw_ostream &OS) const {
OS << "{ "
<< "File: " << SourceFilePath << ", Line: " << SourceLine
diff --git a/llvm/test/tools/llvm-remarkutil/annotation-count-with-dbg-loc.test b/llvm/test/tools/llvm-remarkutil/annotation-count-with-dbg-loc.test
index 673a38001f760b4..cdc731c003f6a04 100644
--- a/llvm/test/tools/llvm-remarkutil/annotation-count-with-dbg-loc.test
+++ b/llvm/test/tools/llvm-remarkutil/annotation-count-with-dbg-loc.test
@@ -1,14 +1,7 @@
RUN: llvm-remarkutil annotation-count --use-debug-loc --parser=yaml --annotation-type=remark %p/Inputs/annotation-count-with-dbg-loc.yaml | FileCheck %s
RUN: llvm-remarkutil yaml2bitstream %p/Inputs/annotation-count-with-dbg-loc.yaml | llvm-remarkutil annotation-count --use-debug-loc --parser=bitstream --annotation-type=remark | FileCheck %s
-RUN: llvm-remarkutil count --parser=yaml --count-by=arg --group-by=function-with-loc --remark-name="AnnotationSummary" %p/Inputs/annotation-count-with-dbg-loc.yaml | FileCheck %s --check-prefix=COUNT-CHECK
-RUN: llvm-remarkutil yaml2bitstream %p/Inputs/annotation-count-with-dbg-loc.yaml | llvm-remarkutil count --parser=bitstream --count-by=arg --group-by=function-with-loc --remark-name="AnnotationSummary" | FileCheck %s --check-prefix=COUNT-CHECK
; CHECK-LABEL: Source,Function,Count
; CHECK: path/to/anno.c:1:2,func1,1
; CHECK: path/to/anno2.c:1:2,func2,2
; CHECK: path/to/anno3.c:1:2,func3,3
-
-; COUNT-CHECK-LABEL: FuctionWithDebugLoc,count
-; COUNT-CHECK: path/to/anno.c:func1,1
-; COUNT-CHECK: path/to/anno2.c:func2,2
-; COUNT-CHECK: path/to/anno3.c:func3,3
diff --git a/llvm/test/tools/llvm-remarkutil/annotation-count.test b/llvm/test/tools/llvm-remarkutil/annotation-count.test
index e006220c64f38fc..73582402201dc98 100644
--- a/llvm/test/tools/llvm-remarkutil/annotation-count.test
+++ b/llvm/test/tools/llvm-remarkutil/annotation-count.test
@@ -1,14 +1,7 @@
RUN: llvm-remarkutil annotation-count --parser=yaml --annotation-type=remark %p/Inputs/annotation-count.yaml | FileCheck %s
RUN: llvm-remarkutil yaml2bitstream %p/Inputs/annotation-count.yaml | llvm-remarkutil annotation-count --parser=bitstream --annotation-type=remark | FileCheck %s
-RUN: llvm-remarkutil count --parser=yaml --count-by=arg --group-by=function --remark-name="AnnotationSummary" %p/Inputs/annotation-count.yaml | FileCheck %s --check-prefix=COUNT-CHECK
-RUN: llvm-remarkutil yaml2bitstream %p/Inputs/annotation-count.yaml | llvm-remarkutil count --parser=bitstream --count-by=arg --group-by=function --remark-name="AnnotationSummary" | FileCheck %s --check-prefix=COUNT-CHECK
; CHECK-LABEL: Function,Count
; CHECK: func1,1
; CHECK: func2,2
; CHECK: func3,3
-
-; COUNT-CHECK-LABEL: Function,count
-; COUNT-CHECK: func1,1
-; COUNT-CHECK: func2,2
-; COUNT-CHECK: func3,3
diff --git a/llvm/test/tools/llvm-remarkutil/broken-bitstream-remark.test b/llvm/test/tools/llvm-remarkutil/broken-bitstream-remark.test
index 78011aece08f720..515c096f540eb47 100644
--- a/llvm/test/tools/llvm-remarkutil/broken-bitstream-remark.test
+++ b/llvm/test/tools/llvm-remarkutil/broken-bitstream-remark.test
@@ -1,6 +1,4 @@
RUN: not llvm-remarkutil bitstream2yaml %p/Inputs/broken-remark -o - 2>&1 | FileCheck %s
RUN: not llvm-remarkutil instruction-count --parser=bitstream %p/Inputs/broken-remark -o - 2>&1 | FileCheck %s
RUN: not llvm-remarkutil annotation-count --parser=bitstream --annotation-type=remark %p/Inputs/broken-remark -o - 2>&1 | FileCheck %s
-RUN: not llvm-remarkutil count --parser=bitstream %p/Inputs/broken-remark -o - 2>&1 | FileCheck %s
-
CHECK: error: Unknown magic number: expecting RMRK, got --- .
diff --git a/llvm/test/tools/llvm-remarkutil/broken-yaml-remark.test b/llvm/test/tools/llvm-remarkutil/broken-yaml-remark.test
index 0f0650660336379..df87e3db80442ef 100644
--- a/llvm/test/tools/llvm-remarkutil/broken-yaml-remark.test
+++ b/llvm/test/tools/llvm-remarkutil/broken-yaml-remark.test
@@ -1,6 +1,4 @@
RUN: not llvm-remarkutil yaml2bitstream %p/Inputs/broken-remark -o - 2>&1 | FileCheck %s
RUN: not llvm-remarkutil instruction-count --parser=yaml %p/Inputs/broken-remark -o - 2>&1 | FileCheck %s
RUN: not llvm-remarkutil annotation-count --parser=yaml --annotation-type=remark %p/Inputs/broken-remark -o - 2>&1 | FileCheck %s
-RUN: not llvm-remarkutil count --parser=yaml %p/Inputs/broken-remark -o - 2>&1 | FileCheck %s
-
CHECK: error: Type, Pass, Name or Function missing
diff --git a/llvm/test/tools/llvm-remarkutil/count/Inputs/remark-count-by.yaml b/llvm/test/tools/llvm-remarkutil/count/Inputs/remark-count-by.yaml
deleted file mode 100644
index 3bd0783b7a0a12b..000000000000000
--- a/llvm/test/tools/llvm-remarkutil/count/Inputs/remark-count-by.yaml
+++ /dev/null
@@ -1,43 +0,0 @@
---- !Analysis
-Pass: generic-remarks-pass
-Name: Remark
-DebugLoc: { File: path/to/anno.c, Line: 1, Column: 2 }
-Function: func1
-Args:
- - count1: '1'
- - count2: '2'
- - count3: '3'
- - count4: '4'
- - String: ' instructions with '
- - type: remark
---- !Analysis
-Pass: generic-remarks-pass
-Name: Remark2
-DebugLoc: { File: path/to/anno2.c, Line: 1, Column: 2 }
-Function: func1
-Args:
- - count1: '1'
- - count2: '2'
- - count3: '3'
- - String: ' instructions with '
- - type: remark
---- !Analysis
-Pass: generic-remarks-pass
-Name: Remark3
-DebugLoc: { File: path/to/anno.c, Line: 1, Column: 2 }
-Function: func1
-Args:
- - count1: '1'
- - String: ' instructions with '
- - type: remark
---- !Analysis
-Pass: generic-remarks-pass
-Name: Remark
-DebugLoc: { File: path/to/anno.c, Line: 1, Column: 2 }
-Function: func2
-Args:
- - count1: '1'
- - count2: '2'
- - count3: '3'
- - String: ' instructions with '
- - type: remark
diff --git a/llvm/test/tools/llvm-remarkutil/count/Inputs/remark-filter-by.yaml b/llvm/test/tools/llvm-remarkutil/count/Inputs/remark-filter-by.yaml
deleted file mode 100644
index e9267bd9404848e..000000000000000
--- a/llvm/test/tools/llvm-remarkutil/count/Inputs/remark-filter-by.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
---- !Analysis
-Pass: generic-remarks-pass
-Name: Remark
-DebugLoc: { File: path/to/anno2.c, Line: 1, Column: 2 }
-Function: func1
-Args:
- - count1: '1'
- - String: ' instructions with '
- - type: remark
---- !Analysis
-Pass: generic-remarks-pass2
-Name: Remark2
-DebugLoc: { File: path/to/anno2.c, Line: 1, Column: 2 }
-Function: func1
-Args:
- - count1: '1'
- - count2: '2'
- - count3: '3'
- - String: ' instructions with '
- - type: remark
---- !Missed
-Pass: generic-remarks-pass
-Name: Remark3
-DebugLoc: { File: path/to/anno.c, Line: 1, Column: 2 }
-Function: func1
-Args:
- - count1: '1'
- - String: ' instructions with '
- - type: remark
---- !Passed
-Pass: generic-remarks-pass
-Name: Remark
-DebugLoc: { File: path/to/anno.c, Line: 1, Column: 2 }
-Function: func1
-Args:
- - count1: '1'
- - count2: '2'
- - count3: '3'
- - String: ' instructions with '
- - type: remark
diff --git a/llvm/test/tools/llvm-remarkutil/count/Inputs/remark-group-by.yaml b/llvm/test/tools/llvm-remarkutil/count/Inputs/remark-group-by.yaml
deleted file mode 100644
index 5f9222214f2c7bf..000000000000000
--- a/llvm/test/tools/llvm-remarkutil/count/Inputs/remark-group-by.yaml
+++ /dev/null
@@ -1,54 +0,0 @@
---- !Analysis
-Pass: generic-remarks-pass
-Name: Remark
-DebugLoc: { File: path/to/anno.c, Line: 1, Column: 2 }
-Function: func1
-Args:
- - count: '1'
- - String: ' instructions with '
- - type: remark
---- !Missed
-Pass: generic-remarks-pass
-Name: Remark
-DebugLoc: { File: path/to/anno.c, Line: 1, Column: 2 }
-Function: func1
-Args:
- - count: '3'
- - String: ' instructions with '
- - type: remark
---- !Passed
-Pass: generic-remarks-pass
-Name: Remark
-DebugLoc: { File: path/to/anno.c, Line: 1, Column: 2 }
-Function: func2
-Args:
- - count: '3'
- - String: ' instructions with '
- - type: remark
---- !Analysis
-Pass: generic-remarks-pass2
-Name: Remark
-DebugLoc: { File: path/to/anno3.c, Line: 1, Column: 2 }
-Function: func1
-Args:
- - count: '3'
- - String: ' instructions with '
- - type: remark
---- !Analysis
-Pass: generic-remarks-pass3
-Name: Remark
-DebugLoc: { File: path/to/anno.c, Line: 1, Column: 2 }
-Function: func2
-Args:
- - count: '2'
- - String: ' instructions with '
- - type: remark
---- !Analysis
-Pass: generic-remarks-pass4
-Name: Remark
-DebugLoc: { File: path/to/anno2.c, Line: 1, Column: 2 }
-Function: func3
-Args:
- - count: '2'
- - String: ' instructions with '
- - type: remark
diff --git a/llvm/test/tools/llvm-remarkutil/count/count-by-keys.test b/llvm/test/tools/llvm-remarkutil/count/count-by-keys.test
deleted file mode 100644
index dc414620c3aa550..000000000000000
--- a/llvm/test/tools/llvm-remarkutil/count/count-by-keys.test
+++ /dev/null
@@ -1,20 +0,0 @@
-RUN: llvm-remarkutil count --parser=yaml --count-by=arg --group-by=source %p/Inputs/remark-count-by.yaml | FileCheck %s
-RUN: llvm-remarkutil count --parser=yaml --count-by=arg --group-by=function %p/Inputs/remark-count-by.yaml | FileCheck %s --check-prefix=CHECKFUNC
-RUN: llvm-remarkutil count --parser=yaml --count-by=arg --group-by=function-with-loc %p/Inputs/remark-count-by.yaml | FileCheck %s --check-prefix=CHECKFUNCLOC
-RUN: llvm-remarkutil count --parser=yaml --count-by=arg --group-by=total %p/Inputs/remark-count-by.yaml | FileCheck %s --check-prefix=CHECKTOTAL
-
-; CHECK-LABEL: Source,count1,count2,count3,count4
-; CHECK: path/to/anno.c,3,4,6,4
-; CHECK: path/to/anno2.c,1,2,3,0
-
-; CHECKFUNC-LABEL: Function,count1,count2,count3,count4
-; CHECKFUNC: func1,3,4,6,4
-; CHECKFUNC: func2,1,2,3,0
-
-; CHECKFUNCLOC-LABEL: FuctionWithDebugLoc,count1,count2,count3,count4
-; CHECKFUNCLOC: path/to/anno.c:func1,2,2,3,4
-; CHECKFUNCLOC: path/to/anno.c:func2,1,2,3,0
-; CHECKFUNCLOC: path/to/anno2.c:func1,1,2,3,0
-
-; CHECKTOTAL-LABEL: Total,count1,count2,count3,count4
-; CHECKTOTAL: Total,4,6,9,4
diff --git a/llvm/test/tools/llvm-remarkutil/count/count-by-remark.test b/llvm/test/tools/llvm-remarkutil/count/count-by-remark.test
deleted file mode 100644
index b0248b9b6ec7111..000000000000000
--- a/llvm/test/tools/llvm-remarkutil/count/count-by-remark.test
+++ /dev/null
@@ -1,20 +0,0 @@
-RUN: llvm-remarkutil count --parser=yaml --count-by=remark-name --group-by=source %p/Inputs/remark-count-by.yaml | FileCheck %s
-RUN: llvm-remarkutil count --parser=yaml --count-by=remark-name --group-by=function %p/Inputs/remark-count-by.yaml | FileCheck %s --check-prefix=CHECKFUNC
-RUN: llvm-remarkutil count --parser=yaml --count-by=remark-name --group-by=function-with-loc %p/Inputs/remark-count-by.yaml | FileCheck %s --check-prefix=CHECKFUNCLOC
-RUN: llvm-remarkutil count --parser=yaml --count-by=remark-name --group-by=total %p/Inputs/remark-count-by.yaml | FileCheck %s --check-prefix=CHECKTOTAL
-
-; CHECK-LABEL: Source,Count
-; CHECK: path/to/anno.c,3
-; CHECK: path/to/anno2.c,1
-
-; CHECKFUNC-LABEL: Function,Count
-; CHECKFUNC: func1,3
-; CHECKFUNC: func2,1
-
-; CHECKFUNCLOC-LABEL: FuctionWithDebugLoc,Count
-; CHECKFUNCLOC: path/to/anno.c:func1,2
-; CHECKFUNCLOC: path/to/anno.c:func2,1
-; CHECKFUNCLOC: path/to/anno2.c:func1,1
-
-; CHECKTOTAL-LABEL: Total,Count
-; CHECKTOTAL: Total,4
diff --git a/llvm/test/tools/llvm-remarkutil/count/filter-by-pass-name.test b/llvm/test/tools/llvm-remarkutil/count/filter-by-pass-name.test
deleted file mode 100644
index 481d6fd2f5820b8..000000000000000
--- a/llvm/test/tools/llvm-remarkutil/count/filter-by-pass-name.test
+++ /dev/null
@@ -1,10 +0,0 @@
-RUN: llvm-remarkutil count --parser=yaml --pass-name=generic-remarks-pass %p/Inputs/remark-filter-by.yaml | FileCheck %s
-RUN: llvm-remarkutil count --parser=yaml --rpass-name=.* %p/Inputs/remark-filter-by.yaml | FileCheck %s --check-prefix=CHECKALL
-
-; CHECK-LABEL: Source,Count
-; CHECK: path/to/anno.c,2
-; CHECK: path/to/anno2.c,1
-
-; CHECKALL-LABEL: Source,Count
-; CHECKALL: path/to/anno.c,2
-; CHECKALL: path/to/anno2.c,2
diff --git a/llvm/test/tools/llvm-remarkutil/count/filter-by-remark-name.test b/llvm/test/tools/llvm-remarkutil/count/filter-by-remark-name.test
deleted file mode 100644
index 20684d57f648cd6..000000000000000
--- a/llvm/test/tools/llvm-remarkutil/count/filter-by-remark-name.test
+++ /dev/null
@@ -1,10 +0,0 @@
-RUN: llvm-remarkutil count --parser=yaml --remark-name=Remark %p/Inputs/remark-filter-by.yaml | FileCheck %s
-RUN: llvm-remarkutil count --parser=yaml --rremark-name=R.* %p/Inputs/remark-filter-by.yaml | FileCheck %s --check-prefix=CHECKALL
-
-; CHECK-LABEL: Source,Count
-; CHECK: path/to/anno.c,1
-; CHECK: path/to/anno2.c,1
-
-; CHECKALL-LABEL: Source,Count
-; CHECKALL: path/to/anno.c,2
-; CHECKALL: path/to/anno2.c,2
diff --git a/llvm/test/tools/llvm-remarkutil/count/filter-by-type.test b/llvm/test/tools/llvm-remarkutil/count/filter-by-type.test
deleted file mode 100644
index c392fe43aa199e5..000000000000000
--- a/llvm/test/tools/llvm-remarkutil/count/filter-by-type.test
+++ /dev/null
@@ -1,16 +0,0 @@
-RUN: llvm-remarkutil count --parser=yaml --remark-type=missed %p/Inputs/remark-filter-by.yaml | FileCheck %s --check-prefix=MISSED
-RUN: llvm-remarkutil count --parser=yaml --remark-type=passed %p/Inputs/remark-filter-by.yaml | FileCheck %s --check-prefix=PASSED
-RUN: llvm-remarkutil count --parser=yaml --remark-type=analysis %p/Inputs/remark-filter-by.yaml | FileCheck %s --check-prefix=ANALYSIS
-RUN: llvm-remarkutil count --parser=yaml --remark-type=unknown %p/Inputs/remark-filter-by.yaml | FileCheck %s --check-prefix=UNKNOWN
-
-; MISSED-LABEL: Source,Count
-; MISSED: path/to/anno.c,1
-
-; PASSED-LABEL: Source,Count
-; PASSED: path/to/anno.c,1
-
-; ANALYSIS-LABEL: Source,Count
-; ANALYSIS: path/to/anno2.c,2
-
-; UNKNOWN: Source,Count
-; UNKNOWN-EMPTY:
diff --git a/llvm/test/tools/llvm-remarkutil/count/group-by-function-with-loc.test b/llvm/test/tools/llvm-remarkutil/count/group-by-function-with-loc.test
deleted file mode 100644
index 2ceb45b38f29f6e..000000000000000
--- a/llvm/test/tools/llvm-remarkutil/count/group-by-function-with-loc.test
+++ /dev/null
@@ -1,7 +0,0 @@
-RUN: llvm-remarkutil count --parser=yaml --group-by=function-with-loc %p/Inputs/remark-group-by.yaml | FileCheck %s
-
-; CHECK-LABEL: FuctionWithDebugLoc,Count
-; CHECK: path/to/anno.c:func1,2
-; CHECK: path/to/anno.c:func2,2
-; CHECK: path/to/anno2.c:func3,1
-; CHECK: path/to/anno3.c:func1,1
diff --git a/llvm/test/tools/llvm-remarkutil/count/group-by-function.test b/llvm/test/tools/llvm-remarkutil/count/group-by-function.test
deleted file mode 100644
index f3d04bb00c269a9..000000000000000
--- a/llvm/test/tools/llvm-remarkutil/count/group-by-function.test
+++ /dev/null
@@ -1,7 +0,0 @@
-
-RUN: llvm-remarkutil count --parser=yaml --group-by=function %p/Inputs/remark-group-by.yaml | FileCheck %s
-
-; CHECK-LABEL: Function,Count
-; CHECK: func1,3
-; CHECK: func2,2
-; CHECK: func3,1
diff --git a/llvm/test/tools/llvm-remarkutil/count/group-by-source.test b/llvm/test/tools/llvm-remarkutil/count/group-by-source.test
deleted file mode 100644
index 0a11ac63925f174..000000000000000
--- a/llvm/test/tools/llvm-remarkutil/count/group-by-source.test
+++ /dev/null
@@ -1,6 +0,0 @@
-RUN: llvm-remarkutil count --parser=yaml --group-by=source %p/Inputs/remark-group-by.yaml | FileCheck %s
-
-; CHECK-LABEL: Source,Count
-; CHECK: path/to/anno.c,4
-; CHECK: path/to/anno2.c,1
-; CHECK: path/to/anno3.c,1
diff --git a/llvm/test/tools/llvm-remarkutil/empty-file.test b/llvm/test/tools/llvm-remarkutil/empty-file.test
index abbf8e02cfa308b..aa2ee41dd70bdf8 100644
--- a/llvm/test/tools/llvm-remarkutil/empty-file.test
+++ b/llvm/test/tools/llvm-remarkutil/empty-file.test
@@ -1,11 +1,9 @@
RUN: not llvm-remarkutil yaml2bitstream %p/Inputs/empty-file -o - 2>&1 | FileCheck %s --check-prefix=YAMLPARSER
RUN: not llvm-remarkutil instruction-count --parser=yaml %p/Inputs/empty-file -o - 2>&1 | FileCheck %s --check-prefix=YAMLPARSER
RUN: not llvm-remarkutil annotation-count --parser=yaml --annotation-type=remark %p/Inputs/empty-file -o - 2>&1 | FileCheck %s --check-prefix=YAMLPARSER
-RUN: not llvm-remarkutil count --parser=yaml %p/Inputs/empty-file -o - 2>&1 | FileCheck %s --check-prefix=YAMLPARSER
RUN: llvm-remarkutil bitstream2yaml %p/Inputs/empty-file -o - 2>&1 | FileCheck %s --allow-empty --check-prefix=BITSTREAM2YAML
RUN: llvm-remarkutil instruction-count --parser=bitstream %p/Inputs/empty-file -o - 2>&1 | FileCheck %s --allow-empty --check-prefix=SIZEBITSTREAM
RUN: llvm-remarkutil annotation-count --parser=bitstream --annotation-type=remark %p/Inputs/empty-file -o - 2>&1 | FileCheck %s --allow-empty --check-prefix=ANNOTATIONBITSTREAM
-RUN: llvm-remarkutil count --parser=bitstream %p/Inputs/empty-file -o - 2>&1 | FileCheck %s --allow-empty --check-prefix=COUNTBITSTREAM
; YAMLPARSER: error: document root is not of mapping type.
@@ -17,6 +15,3 @@ RUN: llvm-remarkutil count --parser=bitstream %p/Inputs/empty-file -o - 2>&1 | F
; ANNOTATIONBITSTREAM-LABEL: Function,Count
; ANNOTATIONBITSTREAM-EMPTY:
-
-; COUNTBITSTREAM-LABEL: Source,Count
-; COUNTBITSTREAM-EMPTY:
diff --git a/llvm/test/tools/llvm-remarkutil/instruction-count-with-dbg-loc.test b/llvm/test/tools/llvm-remarkutil/instruction-count-with-dbg-loc.test
index f1efd44d688d88f..ac6c8256febe0ed 100644
--- a/llvm/test/tools/llvm-remarkutil/instruction-count-with-dbg-loc.test
+++ b/llvm/test/tools/llvm-remarkutil/instruction-count-with-dbg-loc.test
@@ -1,14 +1,7 @@
RUN: llvm-remarkutil instruction-count --use-debug-loc --parser=yaml %p/Inputs/instruction-count-with-dbg-loc.yaml | FileCheck %s
RUN: llvm-remarkutil yaml2bitstream %p/Inputs/instruction-count-with-dbg-loc.yaml | llvm-remarkutil instruction-count --use-debug-loc --parser=bitstream | FileCheck %s
-RUN: llvm-remarkutil count --parser=yaml --count-by=arg --group-by=function-with-loc --remark-name="InstructionCount" %p/Inputs/instruction-count-with-dbg-loc.yaml | FileCheck %s --check-prefix=COUNT-CHECK
-RUN: llvm-remarkutil yaml2bitstream %p/Inputs/instruction-count-with-dbg-loc.yaml | llvm-remarkutil count --parser=bitstream --count-by=arg --group-by=function-with-loc --remark-name="InstructionCount" | FileCheck %s --check-prefix=COUNT-CHECK
; CHECK-LABEL: Source,Function,InstructionCount
; CHECK: path/to/inst.c:1:2,func1,1
; CHECK: path/to/inst2.c:1:2,func2,2
; CHECK: path/to/inst3.c:1:2,func3,3
-
-; COUNT-CHECK-LABEL: FuctionWithDebugLoc,NumInstructions
-; COUNT-CHECK: path/to/inst.c:func1,1
-; COUNT-CHECK: path/to/inst2.c:func2,2
-; COUNT-CHECK: path/to/inst3.c:func3,3
diff --git a/llvm/test/tools/llvm-remarkutil/instruction-count.test b/llvm/test/tools/llvm-remarkutil/instruction-count.test
index c4bc3e5780e3f55..d5f62e36c13eeef 100644
--- a/llvm/test/tools/llvm-remarkutil/instruction-count.test
+++ b/llvm/test/tools/llvm-remarkutil/instruction-count.test
@@ -1,14 +1,7 @@
RUN: llvm-remarkutil instruction-count --parser=yaml %p/Inputs/instruction-count.yaml | FileCheck %s
RUN: llvm-remarkutil yaml2bitstream %p/Inputs/instruction-count.yaml | llvm-remarkutil instruction-count --parser=bitstream | FileCheck %s
-RUN: llvm-remarkutil count --parser=yaml --count-by=arg --group-by=function --remark-name="InstructionCount" %p/Inputs/instruction-count.yaml | FileCheck %s --check-prefix=COUNT-CHECK
-RUN: llvm-remarkutil yaml2bitstream %p/Inputs/instruction-count.yaml | llvm-remarkutil count --parser=bitstream --count-by=arg --group-by=function --remark-name="InstructionCount" | FileCheck %s --check-prefix=COUNT-CHECK
; CHECK-LABEL: Function,InstructionCount
; CHECK: func1,1
; CHECK: func2,2
; CHECK: func3,3
-
-; COUNT-CHECK-LABEL: Function,NumInstructions
-; COUNT-CHECK: func1,1
-; COUNT-CHECK: func2,2
-; COUNT-CHECK: func3,3
diff --git a/llvm/tools/llvm-remarkutil/CMakeLists.txt b/llvm/tools/llvm-remarkutil/CMakeLists.txt
index 48aeb9397cda16d..c1dd311e979843a 100644
--- a/llvm/tools/llvm-remarkutil/CMakeLists.txt
+++ b/llvm/tools/llvm-remarkutil/CMakeLists.txt
@@ -7,7 +7,6 @@ set(LLVM_LINK_COMPONENTS
add_llvm_tool(llvm-remarkutil
RemarkConvert.cpp
RemarkCount.cpp
- RemarkCounter.cpp
RemarkSizeDiff.cpp
RemarkUtil.cpp
RemarkUtilHelpers.cpp
diff --git a/llvm/tools/llvm-remarkutil/RemarkCounter.cpp b/llvm/tools/llvm-remarkutil/RemarkCounter.cpp
deleted file mode 100644
index b7cbebc0ca8e688..000000000000000
--- a/llvm/tools/llvm-remarkutil/RemarkCounter.cpp
+++ /dev/null
@@ -1,337 +0,0 @@
-//===- RemarkCounter.cpp --------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// Generic tool to count remarks based on properties
-//
-//===----------------------------------------------------------------------===//
-
-#include "RemarkCounter.h"
-#include "RemarkUtilRegistry.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/Regex.h"
-
-using namespace llvm;
-using namespace remarks;
-using namespace llvm::remarkutil;
-
-static cl::SubCommand CountSub("count",
- "Collect remarks based on specified criteria.");
-
-INPUT_FORMAT_COMMAND_LINE_OPTIONS(CountSub)
-INPUT_OUTPUT_COMMAND_LINE_OPTIONS(CountSub)
-
-static cl::list<std::string>
- Keys("args", cl::desc("Specify remark argument/s to count by."),
- cl::value_desc("arguments"), cl::sub(CountSub), cl::ValueOptional);
-static cl::list<std::string> RKeys(
- "rargs",
- cl::desc(
- "Specify remark argument/s to count (accepts regular expressions)."),
- cl::value_desc("arguments"), cl::sub(CountSub), cl::ValueOptional);
-static cl::opt<std::string>
- RemarkNameOpt("remark-name",
- cl::desc("Optional remark name to filter collection by."),
- cl::ValueOptional, cl::sub(CountSub));
-static cl::opt<std::string>
- PassNameOpt("pass-name", cl::ValueOptional,
- cl::desc("Optional remark pass name to filter collection by."),
- cl::sub(CountSub));
-
-static cl::opt<std::string> RemarkFilterArgByOpt(
- "filter-arg-by", cl::desc("Optional remark arg to filter collection by."),
- cl::ValueOptional, cl::sub(CountSub));
-static cl::opt<std::string>
- RemarkNameOptRE("rremark-name",
- cl::desc("Optional remark name to filter collection by "
- "(accepts regular expressions)."),
- cl::ValueOptional, cl::sub(CountSub));
-static cl::opt<std::string>
- RemarkArgFilterOptRE("rfilter-arg-by",
- cl::desc("Optional remark arg to filter collection by "
- "(accepts regular expressions)."),
- cl::sub(CountSub), cl::ValueOptional);
-static cl::opt<std::string>
- PassNameOptRE("rpass-name", cl::ValueOptional,
- cl::desc("Optional remark pass name to filter collection "
- "by (accepts regular expressions)."),
- cl::sub(CountSub));
-static cl::opt<Type> RemarkTypeOpt(
- "remark-type", cl::desc("Optional remark type to filter collection by."),
- cl::values(clEnumValN(Type::Unknown, "unknown", "UNKOWN"),
- clEnumValN(Type::Passed, "passed", "PASSED"),
- clEnumValN(Type::Missed, "missed", "MISSED"),
- clEnumValN(Type::Analysis, "analysis", "ANALYSIS"),
- clEnumValN(Type::AnalysisFPCommute, "analysis-fp-commute",
- "ANALYSIS_FP_COMMUTE"),
- clEnumValN(Type::AnalysisAliasing, "analysis-aliasing",
- "ANALYSIS_ALIASING"),
- clEnumValN(Type::Failure, "failure", "FAILURE")),
- cl::init(Type::Failure), cl::sub(CountSub));
-static cl::opt<CountBy> CountByOpt(
- "count-by", cl::desc("Specify the property to collect remarks by."),
- cl::values(
- clEnumValN(CountBy::REMARK, "remark-name",
- "Counts individual remarks based on how many of the remark "
- "exists."),
- clEnumValN(CountBy::ARGUMENT, "arg",
- "Counts based on the value each specified argument has. The "
- "argument has to have a number value to be considered.")),
- cl::init(CountBy::REMARK), cl::sub(CountSub));
-static cl::opt<GroupBy> GroupByOpt(
- "group-by", cl::desc("Specify the property to group remarks by."),
- cl::values(
- clEnumValN(
- GroupBy::PER_SOURCE, "source",
- "Display the count broken down by the filepath of each remark "
- "emitted. Requires remarks to have DebugLoc information."),
- clEnumValN(GroupBy::PER_FUNCTION, "function",
- "Breakdown the count by function name."),
- clEnumValN(
- GroupBy::PER_FUNCTION_WITH_DEBUG_LOC, "function-with-loc",
- "Breakdown the count by function name taking into consideration "
- "the filepath info from the DebugLoc of the remark."),
- clEnumValN(GroupBy::TOTAL, "total",
- "Output the total number corresponding to the count for the "
- "provided input file.")),
- cl::init(GroupBy::PER_SOURCE), cl::sub(CountSub));
-
-/// Look for matching argument with \p Key in \p Remark and return the parsed
-/// integer value or 0 if it is has no integer value.
-static unsigned getValForKey(StringRef Key, const Remark &Remark) {
- auto *RemarkArg = find_if(Remark.Args, [&Key](const Argument &Arg) {
- return Arg.Key == Key && Arg.isValInt();
- });
- if (RemarkArg == Remark.Args.end())
- return 0;
- return *RemarkArg->getValAsInt();
-}
-
-Error Filters::regexArgumentsValid() {
- if (RemarkNameFilter && RemarkNameFilter->IsRegex)
- if (auto E = checkRegex(RemarkNameFilter->FilterRE))
- return E;
- if (PassNameFilter && PassNameFilter->IsRegex)
- if (auto E = checkRegex(PassNameFilter->FilterRE))
- return E;
- if (ArgFilter && ArgFilter->IsRegex)
- if (auto E = checkRegex(ArgFilter->FilterRE))
- return E;
- return Error::success();
-}
-
-bool Filters::filterRemark(const Remark &Remark) {
- if (RemarkNameFilter && !RemarkNameFilter->match(Remark.RemarkName))
- return false;
- if (PassNameFilter && !PassNameFilter->match(Remark.PassName))
- return false;
- if (RemarkTypeFilter)
- return *RemarkTypeFilter == Remark.RemarkType;
- if (ArgFilter) {
- if (!any_of(Remark.Args,
- [this](Argument Arg) { return ArgFilter->match(Arg.Val); }))
- return false;
- }
- return true;
-}
-
-Error ArgumentCounter::getAllMatchingArgumentsInRemark(
- StringRef Buffer, ArrayRef<FilterMatcher> Arguments, Filters &Filter) {
- auto MaybeParser = createRemarkParser(InputFormat, Buffer);
- if (!MaybeParser)
- return MaybeParser.takeError();
- auto &Parser = **MaybeParser;
- auto MaybeRemark = Parser.next();
- for (; MaybeRemark; MaybeRemark = Parser.next()) {
- auto &Remark = **MaybeRemark;
- // Only collect keys from remarks included in the filter.
- if (!Filter.filterRemark(Remark))
- continue;
- for (auto &Key : Arguments) {
- for (Argument Arg : Remark.Args)
- if (Key.match(Arg.Key) && Arg.isValInt())
- ArgumentSetIdxMap.insert({Arg.Key, ArgumentSetIdxMap.size()});
- }
- }
-
- auto E = MaybeRemark.takeError();
- if (!E.isA<EndOfFileError>())
- return E;
- consumeError(std::move(E));
- return Error::success();
-}
-
-std::optional<std::string> Counter::getGroupByKey(const Remark &Remark) {
-
- switch (GroupBy) {
- case GroupBy::PER_FUNCTION:
- return Remark.FunctionName.str();
- case GroupBy::TOTAL:
- return "Total";
- case GroupBy::PER_SOURCE:
- case GroupBy::PER_FUNCTION_WITH_DEBUG_LOC:
- if (!Remark.Loc.has_value())
- return std::nullopt;
-
- if (GroupBy == GroupBy::PER_FUNCTION_WITH_DEBUG_LOC)
- return Remark.Loc->SourceFilePath.str() + ":" + Remark.FunctionName.str();
- return Remark.Loc->SourceFilePath.str();
- }
-}
-
-void ArgumentCounter::collect(const Remark &Remark) {
- SmallVector<unsigned, 4> Row(ArgumentSetIdxMap.size());
- std::optional<std::string> GroupByKey = getGroupByKey(Remark);
- // Early return if we don't have a value
- if (!GroupByKey)
- return;
- auto GroupVal = *GroupByKey;
- CountByKeysMap.insert({GroupVal, Row});
- for (auto [Key, Idx] : ArgumentSetIdxMap) {
- auto Count = getValForKey(Key, Remark);
- CountByKeysMap[GroupVal][Idx] += Count;
- }
-}
-
-void RemarkCounter::collect(const Remark &Remark) {
- std::optional<std::string> Key = getGroupByKey(Remark);
- if (!Key.has_value())
- return;
- auto Iter = CountedByRemarksMap.insert({*Key, 1});
- if (!Iter.second)
- Iter.first->second += 1;
-}
-
-Error ArgumentCounter::print(StringRef OutputFileName) {
- auto MaybeOF =
- getOutputFileWithFlags(OutputFileName, sys::fs::OF_TextWithCRLF);
- if (!MaybeOF)
- return MaybeOF.takeError();
-
- auto OF = std::move(*MaybeOF);
- OF->os() << groupByToStr(GroupBy) << ",";
- unsigned Idx = 0;
- for (auto [Key, _] : ArgumentSetIdxMap) {
- OF->os() << Key;
- if (Idx != ArgumentSetIdxMap.size() - 1)
- OF->os() << ",";
- Idx++;
- }
- OF->os() << "\n";
- for (auto [Header, CountVector] : CountByKeysMap) {
- OF->os() << Header << ",";
- unsigned Idx = 0;
- for (auto Count : CountVector) {
- OF->os() << Count;
- if (Idx != ArgumentSetIdxMap.size() - 1)
- OF->os() << ",";
- Idx++;
- }
- OF->os() << "\n";
- }
- return Error::success();
-}
-
-Error RemarkCounter::print(StringRef OutputFileName) {
- auto MaybeOF =
- getOutputFileWithFlags(OutputFileName, sys::fs::OF_TextWithCRLF);
- if (!MaybeOF)
- return MaybeOF.takeError();
-
- auto OF = std::move(*MaybeOF);
- OF->os() << groupByToStr(GroupBy) << ","
- << "Count\n";
- for (auto [Key, Count] : CountedByRemarksMap)
- OF->os() << Key << "," << Count << "\n";
- OF->keep();
- return Error::success();
-}
-
-Expected<Filters> getRemarkFilter() {
- // Create Filter properties.
- std::optional<FilterMatcher> RemarkNameFilter;
- std::optional<FilterMatcher> PassNameFilter;
- std::optional<FilterMatcher> RemarkArgFilter;
- std::optional<Type> RemarkType;
- if (!RemarkNameOpt.empty())
- RemarkNameFilter = {RemarkNameOpt, false};
- else if (!RemarkNameOptRE.empty())
- RemarkNameFilter = {RemarkNameOptRE, true};
- if (!PassNameOpt.empty())
- PassNameFilter = {PassNameOpt, false};
- else if (!PassNameOptRE.empty())
- PassNameFilter = {PassNameOptRE, true};
- if (RemarkTypeOpt != Type::Failure)
- RemarkType = RemarkTypeOpt;
- if (!RemarkFilterArgByOpt.empty())
- RemarkArgFilter = {RemarkFilterArgByOpt, false};
- else if (!RemarkArgFilterOptRE.empty())
- RemarkArgFilter = {RemarkArgFilterOptRE, true};
- // Create RemarkFilter.
- return Filters::createRemarkFilter(std::move(RemarkNameFilter),
- std::move(PassNameFilter),
- std::move(RemarkArgFilter), RemarkType);
-}
-
-Error useCollectRemark(StringRef Buffer, Counter &Counter, Filters &Filter) {
- // Create Parser.
- auto MaybeParser = createRemarkParser(InputFormat, Buffer);
- if (!MaybeParser)
- return MaybeParser.takeError();
- auto &Parser = **MaybeParser;
- auto MaybeRemark = Parser.next();
- for (; MaybeRemark; MaybeRemark = Parser.next()) {
- const Remark &Remark = **MaybeRemark;
- if (Filter.filterRemark(Remark))
- Counter.collect(Remark);
- }
-
- if (auto E = Counter.print(OutputFileName))
- return E;
- auto E = MaybeRemark.takeError();
- if (!E.isA<EndOfFileError>())
- return E;
- consumeError(std::move(E));
- return Error::success();
-}
-
-static Error collectRemarks() {
- // Create a parser for the user-specified input format.
- auto MaybeBuf = getInputMemoryBuffer(InputFileName);
- if (!MaybeBuf)
- return MaybeBuf.takeError();
- StringRef Buffer = (*MaybeBuf)->getBuffer();
- auto MaybeFilter = getRemarkFilter();
- if (!MaybeFilter)
- return MaybeFilter.takeError();
- auto &Filter = *MaybeFilter;
- if (CountByOpt == CountBy::REMARK) {
- RemarkCounter RC(GroupByOpt);
- if (auto E = useCollectRemark(Buffer, RC, Filter))
- return E;
- } else if (CountByOpt == CountBy::ARGUMENT) {
- SmallVector<FilterMatcher, 4> ArgumentsVector;
- if (!Keys.empty()) {
- for (auto &Key : Keys)
- ArgumentsVector.push_back({Key, false});
- } else if (!RKeys.empty())
- for (auto Key : RKeys)
- ArgumentsVector.push_back({Key, true});
- else
- ArgumentsVector.push_back({".*", true});
-
- Expected<ArgumentCounter> AC = ArgumentCounter::createArgumentCounter(
- GroupByOpt, ArgumentsVector, Buffer, Filter);
- if (!AC)
- return AC.takeError();
- if (auto E = useCollectRemark(Buffer, *AC, Filter))
- return E;
- }
- return Error::success();
-}
-
-static CommandRegistration CountReg(&CountSub, collectRemarks);
diff --git a/llvm/tools/llvm-remarkutil/RemarkCounter.h b/llvm/tools/llvm-remarkutil/RemarkCounter.h
deleted file mode 100644
index aa9eaf698849cb2..000000000000000
--- a/llvm/tools/llvm-remarkutil/RemarkCounter.h
+++ /dev/null
@@ -1,217 +0,0 @@
-//===- RemarkCounter.h ----------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// Generic tool to count remarks based on properties
-//
-//===----------------------------------------------------------------------===//
-#ifndef TOOLS_LLVM_REMARKCOUNTER_H
-#define TOOLS_LLVM_REMARKCOUNTER_H
-#include "RemarkUtilHelpers.h"
-#include "llvm/ADT/MapVector.h"
-#include "llvm/ADT/SmallSet.h"
-#include "llvm/Support/Regex.h"
-#include <list>
-
-namespace llvm {
-namespace remarks {
-
-/// Collect remarks by counting the existance of a remark or by looking through
-/// the keys and summing through the total count.
-enum class CountBy { REMARK, ARGUMENT };
-
-/// Summarize the count by either emitting one count for the remark file, or
-/// grouping the count by source file or by function name.
-enum class GroupBy {
- TOTAL,
- PER_SOURCE,
- PER_FUNCTION,
- PER_FUNCTION_WITH_DEBUG_LOC
-};
-
-/// Convert \p GroupBy to a std::string.
-inline std::string groupByToStr(GroupBy GroupBy) {
- switch (GroupBy) {
- default:
- return "Total";
- case GroupBy::PER_FUNCTION:
- return "Function";
- case GroupBy::PER_FUNCTION_WITH_DEBUG_LOC:
- return "FuctionWithDebugLoc";
- case GroupBy::PER_SOURCE:
- return "Source";
- }
-}
-
-/// Filter object which can be either a string or a regex to match with the
-/// remark properties.
-struct FilterMatcher {
- Regex FilterRE;
- std::string FilterStr;
- bool IsRegex;
- FilterMatcher(std::string Filter, bool IsRegex) : IsRegex(IsRegex) {
- if (IsRegex)
- FilterRE = Regex(Filter);
- else
- FilterStr = Filter;
- }
-
- bool match(StringRef StringToMatch) const {
- if (IsRegex)
- return FilterRE.match(StringToMatch);
- return FilterStr == StringToMatch.trim().str();
- }
-};
-
-/// Filter out remarks based on remark properties based on name, pass name,
-/// argument and type.
-struct Filters {
- std::optional<FilterMatcher> RemarkNameFilter;
- std::optional<FilterMatcher> PassNameFilter;
- std::optional<FilterMatcher> ArgFilter;
- std::optional<Type> RemarkTypeFilter;
- /// Returns a filter object if all the arguments provided are valid regex
- /// types otherwise return an error.
- static Expected<Filters>
- createRemarkFilter(std::optional<FilterMatcher> RemarkNameFilter,
- std::optional<FilterMatcher> PassNameFilter,
- std::optional<FilterMatcher> ArgFilter,
- std::optional<Type> RemarkTypeFilter) {
- Filters Filter;
- Filter.RemarkNameFilter = std::move(RemarkNameFilter);
- Filter.PassNameFilter = std::move(PassNameFilter);
- Filter.ArgFilter = std::move(ArgFilter);
- Filter.RemarkTypeFilter = std::move(RemarkTypeFilter);
- if (auto E = Filter.regexArgumentsValid())
- return E;
- return Filter;
- }
- /// Returns true if \p Remark satisfies all the provided filters.
- bool filterRemark(const Remark &Remark);
-
-private:
- /// Check if arguments can be parsed as valid regex types.
- Error regexArgumentsValid();
-};
-
-/// Convert Regex string error to an error object.
-inline Error checkRegex(const Regex &Regex) {
- std::string Error;
- if (!Regex.isValid(Error))
- return createStringError(make_error_code(std::errc::invalid_argument),
- Twine("Regex: ", Error));
- return Error::success();
-}
-
-/// Abstract counter class used to define the general required methods for
-/// counting a remark.
-struct Counter {
- GroupBy GroupBy;
- Counter(){};
- Counter(enum GroupBy GroupBy) : GroupBy(GroupBy) {}
- /// Obtain the field for collecting remark info based on how we are
- /// collecting. Remarks are grouped by FunctionName, Source, Source and
- /// Function or collect by file.
- std::optional<std::string> getGroupByKey(const Remark &Remark);
-
- /// Collect count information from \p Remark organized based on \p GroupBy
- /// property.
- virtual void collect(const Remark &) = 0;
- /// Output the final count to the file \p OutputFileName
- virtual Error print(StringRef OutputFileName) = 0;
- virtual ~Counter() = default;
-};
-
-/// Count remarks based on the provided \p Keys argument and summing up the
-/// value for each matching key organized by source, function or reporting a
-/// total for the specified remark file.
-/// Reporting count grouped by source:
-///
-/// | source | key1 | key2 | key3 |
-/// |---------------|------|------|------|
-/// | path/to/file1 | 0 | 1 | 3 |
-/// | path/to/file2 | 1 | 0 | 2 |
-/// | path/to/file3 | 2 | 3 | 1 |
-///
-/// Reporting count grouped by function:
-///
-/// | Function | key1 | key2 | key3 |
-/// |---------------|------|------|------|
-/// | function1 | 0 | 1 | 3 |
-/// | function2 | 1 | 0 | 2 |
-/// | function3 | 2 | 3 | 1 |
-struct ArgumentCounter : Counter {
- /// The internal object to keep the count for the remarks. The first argument
- /// corresponds to the property we are collecting for this can be either a
- /// source or function. The second argument is a row of integers where each
- /// item in the row is the count for a specified key.
- std::map<std::string, SmallVector<unsigned, 4>> CountByKeysMap;
- /// A set of all the remark argument found in the remark file. The second
- /// argument is the index of each of those arguments which can be used in
- /// `CountByKeysMap` to fill count information for that argument.
- MapVector<StringRef, unsigned> ArgumentSetIdxMap;
- /// Create an argument counter. If the provided \p Arguments represent a regex
- /// vector then we need to check that the provided regular expressions are
- /// valid if not we return an Error.
- static Expected<ArgumentCounter>
- createArgumentCounter(enum GroupBy GroupBy, ArrayRef<FilterMatcher> Arguments,
- StringRef Buffer, Filters &Filter) {
- ArgumentCounter AC;
- AC.GroupBy = GroupBy;
- for (auto &Arg : Arguments) {
- if (Arg.IsRegex) {
- if (auto E = checkRegex(Arg.FilterRE))
- return E;
- }
- }
- if (auto E = AC.getAllMatchingArgumentsInRemark(Buffer, Arguments, Filter))
- return E;
- return AC;
- }
-
- /// Update the internal count map based on the remark integer arguments that
- /// correspond the the user specified argument keys to collect for.
- void collect(const Remark &) override;
-
- /// Print a CSV table consisting of an index which is specified by \p
- /// `GroupBy` and can be a function name, source file name or function name
- /// with the full source path and columns of user specified remark arguments
- /// to collect the count for.
- Error print(StringRef OutputFileName) override;
-
-private:
- /// collect all the arguments that match the list of \p Arguments provided by
- /// parsing through \p Buffer of remarks and filling \p ArgumentSetIdxMap
- /// acting as a row for for all the keys that we are interested in collecting
- /// information for.
- Error getAllMatchingArgumentsInRemark(StringRef Buffer,
- ArrayRef<FilterMatcher> Arguments,
- Filters &Filter);
-};
-
-/// Collect remarks based by counting the existance of individual remarks. The
-/// reported table will be structured based on the provided \p GroupBy argument
-/// by reporting count for functions, source or total count for the provided
-/// remark file.
-struct RemarkCounter : Counter {
- std::map<std::string, unsigned> CountedByRemarksMap;
- RemarkCounter(enum GroupBy GroupBy) : Counter(GroupBy) {}
-
- /// Advance the internal map count broken by \p GroupBy when
- /// seeing \p Remark.
- void collect(const Remark &) override;
-
- /// Print a CSV table consisting of an index which is specified by \p
- /// `GroupBy` and can be a function name, source file name or function name
- /// with the full source path and a counts column corresponding to the count
- /// of each individual remark at th index.
- Error print(StringRef OutputFileName) override;
-};
-} // namespace remarks
-
-} // namespace llvm
-#endif // TOOLS_LLVM_REMARKCOUNTER_H
More information about the llvm-commits
mailing list