DebugLLVM
LLVM is provided with a debug infrastructure. If you want to debug the compiler, you only need to build LLVM and Clang in debug mode.
Manual compiler debug
If you want to print some variable values inside the compiler, LLVM provides the outs() and errs() functions that return a reference to a raw_ostream for respectively the standard output and the standard error. These functions are defined inside the /lib/raw_osstream.cpp file and can be used just as the standard C++ output stream object cout using the insertion operator (<<). In the following, an example:
errs() << "Could not find host " << HostName << "\n";
Typical errors
Cannot select
fatal error: error in backend: Cannot select:
...
...
...
In function: function name
clang-3.9: error: clang frontend command failed with exit code 70 (use -v to see invocation)
This error occurs when the backend lacks a rule to perform the instruction selection of a certain SelectionDAG node. In such a case, you have a look at the NuPlusInstrFormats.td, NuPlusInstrInfo.td and NuPlusISelLowering.cpp files to understand why this node cannot be lowered.