From 6c40a0993a5b5e868384da72b549fd0badc32607 Mon Sep 17 00:00:00 2001 From: tnowicki Date: Mon, 25 Nov 2024 12:40:03 -0500 Subject: [PATCH 1/2] [Debug] Use macro var args to allow templates within a DEBUG_WITH_TYPE blocks --- llvm/include/llvm/Support/Debug.h | 8 ++++---- llvm/unittests/Support/DebugTest.cpp | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/llvm/include/llvm/Support/Debug.h b/llvm/include/llvm/Support/Debug.h index 3e2f0d9b43fc0..c16327033e549 100644 --- a/llvm/include/llvm/Support/Debug.h +++ b/llvm/include/llvm/Support/Debug.h @@ -61,15 +61,15 @@ void setCurrentDebugTypes(const char **Types, unsigned Count); /// /// This will emit the debug information if -debug is present, and -debug-only /// is not specified, or is specified as "bitset". -#define DEBUG_WITH_TYPE(TYPE, X) \ - do { if (::llvm::DebugFlag && ::llvm::isCurrentDebugType(TYPE)) { X; } \ +#define DEBUG_WITH_TYPE(TYPE, ...) \ + do { if (::llvm::DebugFlag && ::llvm::isCurrentDebugType(TYPE)) { __VA_ARGS__; } \ } while (false) #else #define isCurrentDebugType(X) (false) #define setCurrentDebugType(X) do { (void)(X); } while (false) #define setCurrentDebugTypes(X, N) do { (void)(X); (void)(N); } while (false) -#define DEBUG_WITH_TYPE(TYPE, X) do { } while (false) +#define DEBUG_WITH_TYPE(TYPE, ...) do { } while (false) #endif /// This boolean is set to true if the '-debug' command line option @@ -98,7 +98,7 @@ raw_ostream &dbgs(); // // LLVM_DEBUG(dbgs() << "Bitset contains: " << Bitset << "\n"); // -#define LLVM_DEBUG(X) DEBUG_WITH_TYPE(DEBUG_TYPE, X) +#define LLVM_DEBUG(...) DEBUG_WITH_TYPE(DEBUG_TYPE, __VA_ARGS__) } // end namespace llvm diff --git a/llvm/unittests/Support/DebugTest.cpp b/llvm/unittests/Support/DebugTest.cpp index e68e3764b4383..9e4b6e8665ad5 100644 --- a/llvm/unittests/Support/DebugTest.cpp +++ b/llvm/unittests/Support/DebugTest.cpp @@ -6,7 +6,9 @@ // //===----------------------------------------------------------------------===// +#include "llvm/ADT/MapVector.h" #include "llvm/Support/Debug.h" +#include "llvm/Support/MathExtras.h" #include "llvm/Support/raw_ostream.h" #include "gtest/gtest.h" @@ -30,4 +32,22 @@ TEST(DebugTest, Basic) { DEBUG_WITH_TYPE("B", os2 << "B"); EXPECT_EQ("A", os2.str()); } + +TEST(DebugTest, CommaInDebugBlock) { + std::string s1, s2; + raw_string_ostream os1(s1), os2(s2); + static const char *DT[] = {"A", "B"}; + static const char Letters[] = {'X', 'Y', 'Z'}; + + llvm::DebugFlag = true; + setCurrentDebugTypes(DT, 2); + DEBUG_WITH_TYPE("A", { + SmallMapVector map; + for (int i = 0; i < 3; i++) + map[i] = Letters[i]; + for (int i = 2; i >= 0; i--) + os1 << map[i]; + }); + EXPECT_EQ("ZYX", os1.str()); +} #endif From 6cebcaabcd8b583587e2342c9fb1907ef630d1dd Mon Sep 17 00:00:00 2001 From: tnowicki Date: Mon, 25 Nov 2024 16:15:59 -0500 Subject: [PATCH 2/2] SWDEV-303548 - Clang format --- llvm/include/llvm/Support/Debug.h | 11 ++++++++--- llvm/unittests/Support/DebugTest.cpp | 12 ++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/llvm/include/llvm/Support/Debug.h b/llvm/include/llvm/Support/Debug.h index c16327033e549..23c54ac9bb4b1 100644 --- a/llvm/include/llvm/Support/Debug.h +++ b/llvm/include/llvm/Support/Debug.h @@ -61,15 +61,20 @@ void setCurrentDebugTypes(const char **Types, unsigned Count); /// /// This will emit the debug information if -debug is present, and -debug-only /// is not specified, or is specified as "bitset". -#define DEBUG_WITH_TYPE(TYPE, ...) \ - do { if (::llvm::DebugFlag && ::llvm::isCurrentDebugType(TYPE)) { __VA_ARGS__; } \ +#define DEBUG_WITH_TYPE(TYPE, ...) \ + do { \ + if (::llvm::DebugFlag && ::llvm::isCurrentDebugType(TYPE)) { \ + __VA_ARGS__; \ + } \ } while (false) #else #define isCurrentDebugType(X) (false) #define setCurrentDebugType(X) do { (void)(X); } while (false) #define setCurrentDebugTypes(X, N) do { (void)(X); (void)(N); } while (false) -#define DEBUG_WITH_TYPE(TYPE, ...) do { } while (false) +#define DEBUG_WITH_TYPE(TYPE, ...) \ + do { \ + } while (false) #endif /// This boolean is set to true if the '-debug' command line option diff --git a/llvm/unittests/Support/DebugTest.cpp b/llvm/unittests/Support/DebugTest.cpp index 9e4b6e8665ad5..e8b754892a4c2 100644 --- a/llvm/unittests/Support/DebugTest.cpp +++ b/llvm/unittests/Support/DebugTest.cpp @@ -6,8 +6,8 @@ // //===----------------------------------------------------------------------===// -#include "llvm/ADT/MapVector.h" #include "llvm/Support/Debug.h" +#include "llvm/ADT/MapVector.h" #include "llvm/Support/MathExtras.h" #include "llvm/Support/raw_ostream.h" #include "gtest/gtest.h" @@ -36,14 +36,14 @@ TEST(DebugTest, Basic) { TEST(DebugTest, CommaInDebugBlock) { std::string s1, s2; raw_string_ostream os1(s1), os2(s2); - static const char *DT[] = {"A", "B"}; - static const char Letters[] = {'X', 'Y', 'Z'}; - + static const char *DT[] = {"A", "B"}; + static const char Letters[] = {'X', 'Y', 'Z'}; + llvm::DebugFlag = true; setCurrentDebugTypes(DT, 2); DEBUG_WITH_TYPE("A", { - SmallMapVector map; - for (int i = 0; i < 3; i++) + SmallMapVector map; + for (int i = 0; i < 3; i++) map[i] = Letters[i]; for (int i = 2; i >= 0; i--) os1 << map[i];