LLVM 22.0.0git
DiagnosticHandler.cpp
Go to the documentation of this file.
1//===- DiagnosticHandler.h - DiagnosticHandler class for LLVM -------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9//
10//===----------------------------------------------------------------------===//
13#include "llvm/Support/Regex.h"
14
15using namespace llvm;
16
17namespace {
18
19/// Regular expression corresponding to the value given in one of the
20/// -pass-remarks* command line flags. Passes whose name matches this regexp
21/// will emit a diagnostic when calling the associated diagnostic function
22/// (emitOptimizationRemark, emitOptimizationRemarkMissed or
23/// emitOptimizationRemarkAnalysis).
24struct PassRemarksOpt {
25 std::shared_ptr<Regex> Pattern;
26
27 void operator=(const std::string &Val) {
28 // Create a regexp object to match pass names for emitOptimizationRemark.
29 if (!Val.empty()) {
30 Pattern = std::make_shared<Regex>(Val);
31 std::string RegexError;
32 if (!Pattern->isValid(RegexError))
33 report_fatal_error(Twine("Invalid regular expression '") + Val +
34 "' in -pass-remarks: " + RegexError,
35 false);
36 }
37 }
38};
39} // namespace
40
41static PassRemarksOpt PassRemarksPassedOptLoc;
42static PassRemarksOpt PassRemarksMissedOptLoc;
43static PassRemarksOpt PassRemarksAnalysisOptLoc;
44
45// -pass-remarks
46// Command line flag to enable emitOptimizationRemark()
48 "pass-remarks", cl::value_desc("pattern"),
49 cl::desc("Enable optimization remarks from passes whose name match "
50 "the given regular expression"),
52
53// -pass-remarks-missed
54// Command line flag to enable emitOptimizationRemarkMissed()
56 "pass-remarks-missed", cl::value_desc("pattern"),
57 cl::desc("Enable missed optimization remarks from passes whose name match "
58 "the given regular expression"),
60
61// -pass-remarks-analysis
62// Command line flag to enable emitOptimizationRemarkAnalysis()
65 "pass-remarks-analysis", cl::value_desc("pattern"),
67 "Enable optimization analysis remarks from passes whose name match "
68 "the given regular expression"),
70
83
static PassRemarksOpt PassRemarksAnalysisOptLoc
static cl::opt< PassRemarksOpt, true, cl::parser< std::string > > PassRemarks("pass-remarks", cl::value_desc("pattern"), cl::desc("Enable optimization remarks from passes whose name match " "the given regular expression"), cl::Hidden, cl::location(PassRemarksPassedOptLoc), cl::ValueRequired)
static cl::opt< PassRemarksOpt, true, cl::parser< std::string > > PassRemarksAnalysis("pass-remarks-analysis", cl::value_desc("pattern"), cl::desc("Enable optimization analysis remarks from passes whose name match " "the given regular expression"), cl::Hidden, cl::location(PassRemarksAnalysisOptLoc), cl::ValueRequired)
static cl::opt< PassRemarksOpt, true, cl::parser< std::string > > PassRemarksMissed("pass-remarks-missed", cl::value_desc("pattern"), cl::desc("Enable missed optimization remarks from passes whose name match " "the given regular expression"), cl::Hidden, cl::location(PassRemarksMissedOptLoc), cl::ValueRequired)
static PassRemarksOpt PassRemarksMissedOptLoc
static PassRemarksOpt PassRemarksPassedOptLoc
static const char PassName[]
StringRef - Represent a constant reference to a string, i.e.
Definition StringRef.h:55
LocationClass< Ty > location(Ty &L)
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI void report_fatal_error(Error Err, bool gen_crash_diag=true)
Definition Error.cpp:167
virtual bool isPassedOptRemarkEnabled(StringRef PassName) const
Return true if passed optimization remarks are enabled, override to provide different implementation.
virtual bool isAnalysisRemarkEnabled(StringRef PassName) const
Return true if analysis remarks are enabled, override to provide different implementation.
virtual bool isMissedOptRemarkEnabled(StringRef PassName) const
Return true if missed optimization remarks are enabled, override to provide different implementation.
virtual bool isAnyRemarkEnabled() const
Return true if any type of remarks are enabled for any pass.