37#undef isCurrentDebugType
38#undef setCurrentDebugType
39#undef setCurrentDebugTypes
46static std::pair<std::string, std::optional<int>>
48 std::optional<int> Level;
49 size_t ColonPos = DbgType.
find(
':');
57 if (to_integer(LevelStr, parsedLevel, 10))
61 return std::make_pair(DbgType.
str(), Level);
86 bool HasEnabledDebugType =
false;
91 HasEnabledDebugType || (!
D.second.has_value() ||
D.second.value() > 0);
92 if (
D.first != DebugType)
94 if (!
D.second.has_value())
96 return D.second >= Level;
98 return !HasEnabledDebugType;
125 static void *call() {
133struct CreateDebugBufferSize {
134 static void *call() {
137 cl::desc(
"Buffer the last N characters of debug output "
138 "until program termination. "
139 "[default 0 -- immediate print-out]"),
153 void operator=(
const std::string &Val)
const {
159 for (
auto DbgType : DbgTypes)
168struct CreateDebugOnly {
169 static void *call() {
173 "Enable a specific type of debug output (comma separated list "
174 "of types using the format \"type[:level]\", where the level "
175 "is an optional integer. The level can be set to 1, 2, 3, etc. to "
176 "control the verbosity of the output. Setting a debug-type level "
177 "to zero acts as an opt-out for this specific debug-type without "
178 "affecting the others."),
209 static struct dbgstream {
213 : strm(
errs(),
"*** Debug Log Output ***\n",
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
static ManagedStatic< cl::opt< bool, true >, CreateDebug > Debug
static void debug_user_sig_handler(void *Cookie)
static ManagedStatic< cl::opt< unsigned >, CreateDebugBufferSize > DebugBufferSize
static std::pair< std::string, std::optional< int > > parseDebugType(StringRef DbgType)
Parse a debug type string into a pair of the debug type and the debug level.
static ManagedStatic< cl::opt< DebugOnlyOpt, true, cl::parser< std::string > >, CreateDebugOnly > DebugOnly
static DebugOnlyOpt DebugOnlyOptLoc
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
ManagedStatic - This transparently changes the behavior of global statics to be lazily constructed on...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringRef - Represent a constant reference to a string, i.e.
std::pair< StringRef, StringRef > split(char Separator) const
Split into two substrings around the first occurrence of a separator character.
std::string str() const
str - Get the contents as an std::string.
constexpr StringRef substr(size_t Start, size_t N=npos) const
Return a reference to the substring from [Start, Start + N).
constexpr bool empty() const
empty - Check if the string is empty.
StringRef take_front(size_t N=1) const
Return a StringRef equal to 'this' but with only the first N elements remaining.
size_t find(char C, size_t From=0) const
Search for the first character C in the string.
static constexpr size_t npos
The instances of the Type class are immutable: once they are created, they are never changed.
circular_raw_ostream - A raw_ostream which can save its data to a circular buffer,...
void flushBufferWithBanner()
flushBufferWithBanner - Force output of the buffer along with a small header.
This class implements an extremely fast bulk output stream that can only output to a stream.
template class LLVM_TEMPLATE_ABI opt< unsigned >
initializer< Ty > init(const Ty &Val)
LocationClass< Ty > location(Ty &L)
LLVM_ABI void AddSignalHandler(SignalHandlerCallback FnPtr, void *Cookie)
Add a function to be called when an abort/kill signal is delivered to the process.
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI bool EnableDebugBuffering
EnableDebugBuffering - This defaults to false.
LLVM_ABI bool isCurrentDebugType(const char *Type, int Level=0)
isCurrentDebugType - Return true if the specified string is the debug type specified on the command l...
LLVM_ABI bool DebugFlag
This boolean is set to true if the '-debug' command line option is specified.
LLVM_ABI void setCurrentDebugTypes(const char **Types, unsigned Count)
setCurrentDebugTypes - Set the current debug type, as if the -debug-only=X,Y,Z option were specified.
static ManagedStatic< std::vector< std::pair< std::string, std::optional< int > > > > CurrentDebugType
The current debug type and an optional debug level.
LLVM_ABI raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
LLVM_ABI void setCurrentDebugType(const char *Type)
setCurrentDebugType - Set the current debug type, as if the -debug-only=X option were specified.
LLVM_ABI raw_fd_ostream & errs()
This returns a reference to a raw_ostream for standard error.