forked from OSchip/llvm-project
Allow setting multiple debug types
Differential revision: https://reviews.llvm.org/D28109 llvm-svn: 290597
This commit is contained in:
parent
1f31fe529e
commit
c089e406b9
|
@ -51,6 +51,12 @@ bool isCurrentDebugType(const char *Type);
|
|||
///
|
||||
void setCurrentDebugType(const char *Type);
|
||||
|
||||
/// setCurrentDebugTypes - Set the current debug type, as if the
|
||||
/// -debug-only=X,Y,Z option were specified. Note that DebugFlag
|
||||
/// also needs to be set to true for debug output to be produced.
|
||||
///
|
||||
void setCurrentDebugTypes(const char **Types, unsigned Count);
|
||||
|
||||
/// DEBUG_WITH_TYPE macro - This macro should be used by passes to emit debug
|
||||
/// information. In the '-debug' option is specified on the commandline, and if
|
||||
/// this is a debug build, then the code specified as the option to the macro
|
||||
|
@ -67,6 +73,7 @@ void setCurrentDebugType(const char *Type);
|
|||
#else
|
||||
#define isCurrentDebugType(X) (false)
|
||||
#define setCurrentDebugType(X)
|
||||
#define setCurrentDebugTypes(X, N)
|
||||
#define DEBUG_WITH_TYPE(TYPE, X) do { } while (false)
|
||||
#endif
|
||||
|
||||
|
|
|
@ -63,10 +63,14 @@ bool isCurrentDebugType(const char *DebugType) {
|
|||
/// debug output to be produced.
|
||||
///
|
||||
void setCurrentDebugType(const char *Type) {
|
||||
CurrentDebugType->clear();
|
||||
CurrentDebugType->push_back(Type);
|
||||
setCurrentDebugTypes(&Type, 1);
|
||||
}
|
||||
|
||||
void setCurrentDebugTypes(const char **Types, unsigned Count) {
|
||||
CurrentDebugType->clear();
|
||||
for (size_t T = 0; T < Count; ++T)
|
||||
CurrentDebugType->push_back(Types[T]);
|
||||
}
|
||||
} // namespace llvm
|
||||
|
||||
// All Debug.h functionality is a no-op in NDEBUG mode.
|
||||
|
|
|
@ -14,6 +14,7 @@ add_llvm_unittest(SupportTests
|
|||
CompressionTest.cpp
|
||||
ConvertUTFTest.cpp
|
||||
DataExtractorTest.cpp
|
||||
DebugTest.cpp
|
||||
DwarfTest.cpp
|
||||
EndianStreamTest.cpp
|
||||
EndianTest.cpp
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
//===- llvm/unittest/Support/DebugTest.cpp --------------------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#include <string>
|
||||
using namespace llvm;
|
||||
|
||||
TEST(DebugTest, Basic) {
|
||||
std::string s1, s2;
|
||||
raw_string_ostream os1(s1), os2(s2);
|
||||
static const char *DT[] = {"A", "B"};
|
||||
|
||||
llvm::DebugFlag = true;
|
||||
setCurrentDebugTypes(DT, 2);
|
||||
DEBUG_WITH_TYPE("A", os1 << "A");
|
||||
DEBUG_WITH_TYPE("B", os1 << "B");
|
||||
EXPECT_EQ("AB", os1.str());
|
||||
|
||||
setCurrentDebugType("A");
|
||||
DEBUG_WITH_TYPE("A", os2 << "A");
|
||||
DEBUG_WITH_TYPE("B", os2 << "B");
|
||||
EXPECT_EQ("A", os2.str());
|
||||
}
|
Loading…
Reference in New Issue