File tree Expand file tree Collapse file tree 2 files changed +29
-4
lines changed Expand file tree Collapse file tree 2 files changed +29
-4
lines changed Original file line number Diff line number Diff line change @@ -61,15 +61,20 @@ void setCurrentDebugTypes(const char **Types, unsigned Count);
61
61
// /
62
62
// / This will emit the debug information if -debug is present, and -debug-only
63
63
// / is not specified, or is specified as "bitset".
64
- #define DEBUG_WITH_TYPE (TYPE, X ) \
65
- do { if (::llvm::DebugFlag && ::llvm::isCurrentDebugType (TYPE)) { X; } \
64
+ #define DEBUG_WITH_TYPE (TYPE, ...) \
65
+ do { \
66
+ if (::llvm::DebugFlag && ::llvm::isCurrentDebugType (TYPE)) { \
67
+ __VA_ARGS__; \
68
+ } \
66
69
} while (false )
67
70
68
71
#else
69
72
#define isCurrentDebugType (X ) (false )
70
73
#define setCurrentDebugType (X ) do { (void )(X); } while (false )
71
74
#define setCurrentDebugTypes (X, N ) do { (void )(X); (void )(N); } while (false )
72
- #define DEBUG_WITH_TYPE (TYPE, X ) do { } while (false )
75
+ #define DEBUG_WITH_TYPE (TYPE, ...) \
76
+ do { \
77
+ } while (false )
73
78
#endif
74
79
75
80
// / This boolean is set to true if the '-debug' command line option
@@ -98,7 +103,7 @@ raw_ostream &dbgs();
98
103
//
99
104
// LLVM_DEBUG(dbgs() << "Bitset contains: " << Bitset << "\n");
100
105
//
101
- #define LLVM_DEBUG (X ) DEBUG_WITH_TYPE(DEBUG_TYPE, X )
106
+ #define LLVM_DEBUG (... ) DEBUG_WITH_TYPE(DEBUG_TYPE, __VA_ARGS__ )
102
107
103
108
} // end namespace llvm
104
109
Original file line number Diff line number Diff line change 7
7
// ===----------------------------------------------------------------------===//
8
8
9
9
#include " llvm/Support/Debug.h"
10
+ #include " llvm/ADT/MapVector.h"
11
+ #include " llvm/Support/MathExtras.h"
10
12
#include " llvm/Support/raw_ostream.h"
11
13
#include " gtest/gtest.h"
12
14
@@ -30,4 +32,22 @@ TEST(DebugTest, Basic) {
30
32
DEBUG_WITH_TYPE (" B" , os2 << " B" );
31
33
EXPECT_EQ (" A" , os2.str ());
32
34
}
35
+
36
+ TEST (DebugTest, CommaInDebugBlock) {
37
+ std::string s1, s2;
38
+ raw_string_ostream os1 (s1), os2 (s2);
39
+ static const char *DT[] = {" A" , " B" };
40
+ static const char Letters[] = {' X' , ' Y' , ' Z' };
41
+
42
+ llvm::DebugFlag = true ;
43
+ setCurrentDebugTypes (DT, 2 );
44
+ DEBUG_WITH_TYPE (" A" , {
45
+ SmallMapVector<int , char , 4 > map;
46
+ for (int i = 0 ; i < 3 ; i++)
47
+ map[i] = Letters[i];
48
+ for (int i = 2 ; i >= 0 ; i--)
49
+ os1 << map[i];
50
+ });
51
+ EXPECT_EQ (" ZYX" , os1.str ());
52
+ }
33
53
#endif
You can’t perform that action at this time.
0 commit comments