[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