[llvm-commits] CVS: llvm/include/Support/Debug.h Statistic.h
Chris Lattner
lattner at cs.uiuc.edu
Fri Aug 1 17:13:08 PDT 2003
Changes in directory llvm/include/Support:
Debug.h added (r1.1)
Statistic.h updated: 1.5 -> 1.6
---
Log message:
Move debugging support out of Statistic.h into Debug.h, implement the new DEBUG_TYPE facilities
---
Diffs of the changes:
Index: llvm/include/Support/Debug.h
diff -c /dev/null llvm/include/Support/Debug.h:1.1
*** /dev/null Fri Aug 1 17:12:50 2003
--- llvm/include/Support/Debug.h Fri Aug 1 17:12:40 2003
***************
*** 0 ****
--- 1,53 ----
+ //===- Debug.h - An easy way to add debug output to your code ---*- C++ -*-===//
+ //
+ // This file implements a handle way of adding debugging information to your
+ // code, without it being enabled all of the time, and without having to add
+ // command line options to enable it.
+ //
+ // In particular, just wrap your code with the DEBUG() macro, and it will be
+ // enabled automatically if you specify '-debug' on the command-line.
+ // Alternatively, you can also use the SET_DEBUG_TYPE("foo") macro to specify
+ // that your debug code belongs to class "foo". Then, on the command line, you
+ // can specify '-debug-only=foo' to enable JUST the debug information for the
+ // foo class.
+ //
+ // When compiling in release mode, the -debug-* options and all code in DEBUG()
+ // statements disappears, so it does not effect the runtime of the code.
+ //
+ //===----------------------------------------------------------------------===//
+
+ #ifndef SUPPORT_DEBUG_H
+ #define SUPPORT_DEBUG_H
+
+ // DebugFlag - This boolean is set to true if the '-debug' command line option
+ // is specified. This should probably not be referenced directly, instead, use
+ // the DEBUG macro below.
+ //
+ extern bool DebugFlag;
+
+ // isCurrentDebugType - Return true if the specified string is the debug type
+ // specified on the command line, or if none was specified on the command line
+ // with the -debug-only=X option.
+ //
+ bool isCurrentDebugType(const char *Type);
+
+ // DEBUG 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 will be
+ // executed. Otherwise it will not be. Example:
+ //
+ // DEBUG(cerr << "Bitset contains: " << Bitset << "\n");
+ //
+
+ #ifndef DEBUG_TYPE
+ #define DEBUG_TYPE ""
+ #endif
+
+ #ifdef NDEBUG
+ #define DEBUG(X)
+ #else
+ #define DEBUG(X) \
+ do { if (DebugFlag && isCurrentDebugType(DEBUG_TYPE)) { X; } } while (0)
+ #endif
+
+ #endif
Index: llvm/include/Support/Statistic.h
diff -u llvm/include/Support/Statistic.h:1.5 llvm/include/Support/Statistic.h:1.6
--- llvm/include/Support/Statistic.h:1.5 Wed Oct 30 20:50:27 2002
+++ llvm/include/Support/Statistic.h Fri Aug 1 17:12:40 2003
@@ -19,27 +19,6 @@
#include <iosfwd>
-// DebugFlag - This boolean is set to true if the '-debug' command line option
-// is specified. This should probably not be referenced directly, instead, use
-// the DEBUG macro below.
-//
-extern bool DebugFlag;
-
-// DEBUG 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 will be
-// executed. Otherwise it will not be. Example:
-//
-// DEBUG(cerr << "Bitset contains: " << Bitset << "\n");
-//
-#ifdef NDEBUG
-#define DEBUG(X)
-#else
-#define DEBUG(X) \
- do { if (DebugFlag) { X; } } while (0)
-#endif
-
-
// StatisticBase - Nontemplated base class for Statistic<> class...
class StatisticBase {
const char *Name;
More information about the llvm-commits
mailing list