Index: llvm/trunk/docs/ProgrammersManual.rst =================================================================== --- llvm/trunk/docs/ProgrammersManual.rst +++ llvm/trunk/docs/ProgrammersManual.rst @@ -408,6 +408,9 @@ 'foo' debug type $ opt < a.bc > /dev/null -mypass -debug-only=bar 'bar' debug type + $ opt < a.bc > /dev/null -mypass -debug-only=foo,bar + 'foo' debug type + 'bar' debug type Of course, in practice, you should only set ``DEBUG_TYPE`` at the top of a file, to specify the debug type for the entire module. Be careful that you only do @@ -417,7 +420,8 @@ use the same string, they will all be turned on when the name is specified. This allows, for example, all debug information for instruction scheduling to be enabled with ``-debug-only=InstrSched``, even if the source lives in multiple -files. +files. The name must not include a comma (,) as that is used to seperate the +arguments of the ``-debug-only`` option. For performance reasons, -debug-only is not available in optimized build (``--enable-optimized``) of LLVM. Index: llvm/trunk/lib/Support/Debug.cpp =================================================================== --- llvm/trunk/lib/Support/Debug.cpp +++ llvm/trunk/lib/Support/Debug.cpp @@ -95,7 +95,10 @@ if (Val.empty()) return; DebugFlag = true; - CurrentDebugType->push_back(Val); + SmallVector dbgTypes; + StringRef(Val).split(dbgTypes, ',', -1, false); + for (auto dbgType : dbgTypes) + CurrentDebugType->push_back(dbgType); } }; @@ -104,10 +107,9 @@ static DebugOnlyOpt DebugOnlyOptLoc; static cl::opt > -DebugOnly("debug-only", cl::desc("Enable a specific type of debug output"), +DebugOnly("debug-only", cl::desc("Enable a specific type of debug output (comma separated list of types)"), cl::Hidden, cl::ZeroOrMore, cl::value_desc("debug string"), cl::location(DebugOnlyOptLoc), cl::ValueRequired); - // Signal handlers - dump debug output on termination. static void debug_user_sig_handler(void *Cookie) { // This is a bit sneaky. Since this is under #ifndef NDEBUG, we