USAGE: clang-check [options] <source0> [... <sourceN>]


-analyze - Run static analysis engine -asm-verbose - Add comments to directives. -ast-dump - Build ASTs and then debug dump them -ast-dump-filter=<string> - Use with -ast-dump or -ast-print to dump/print only AST declaration nodes having a certain substring in a qualified name. Use -ast-list to list all filterable declaration node names. -ast-list - Build ASTs and print the list of declaration node qualified names -ast-print - Build ASTs and then pretty-print them -bounds-checking-single-trap - Use one trap block per function -cppfname=<function name> - Specify the name of the generated function -cppfor=<string> - Specify the name of the thing to generate -cppgen - Choose what kind of output to generate


- Generate a complete program


- Generate a module definition


- Generate contents of a module


- Generate a function definition


- Generate all function definitions


- Generate an inline function


- Generate a variable definition


- Generate a type definition -disable-debug-info-verifier - -disable-spill-fusing - Disable fusing of spill code into instructions -enable-correct-eh-support - Make the -lowerinvoke pass insert expensive, but correct, EH code -enable-load-pre - -enable-objc-arc-opts - enable/disable all ARC Optimizations -enable-tbaa - -extra-arg=<string> - Additional argument to append to the compiler command line -extra-arg-before=<string> - Additional argument to prepend to the compiler command line -fatal-assembler-warnings - Consider warnings as error -fdata-sections - Emit data into separate sections -ffunction-sections - Emit functions into separate sections -fix-what-you-can - Apply fix-it advice even in the presence of unfixable errors -fixit - Apply fix-it advice to the input source -help - Display available options (-help-hidden for more) -internalize-public-api-file=<filename> - A file containing list of symbol names to preserve -internalize-public-api-list=<list> - A list of symbol names to preserve -join-liveintervals - Coalesce copies (default=true) -limit-float-precision=<uint> - Generate low-precision inline sequences for some float libcalls -mc-x86-disable-arith-relaxation - Disable relaxation of arithmetic instruction for X86 -mips16-hard-float - MIPS: mips16 hard float enable. -mno-ldc1-sdc1 - Expand double precision loads and stores to their single precision counterparts -nvptx-sched4reg - NVPTX Specific: schedule for register pressue -p=<string> - Build path -pre-RA-sched - Instruction schedulers available (before register allocation):


- VLIW scheduler


- Bottom-up register pressure aware list scheduling which tries to balance ILP and register pressure


- Bottom-up register pressure aware list scheduling which tries to balance latency and register pressure


- Similar to list-burr but schedules in source order when possible


- Bottom-up register reduction list scheduling


- Linearize DAG, no scheduling


- Fast suboptimal list scheduling


- Best scheduler for the target -print-after-all - Print IR after each pass -print-before-all - Print IR before each pass -print-machineinstrs=<pass-name> - Print machine instrs -regalloc - Register allocator to use


- pick register allocator based on -O option


- basic register allocator


- fast register allocator


- greedy register allocator


- PBQP register allocator -spiller - Spiller to use: (default: standard)


- trivial spiller


- inline spiller -stats - Enable statistics output from program (available with Asserts) -time-passes - Time each pass, printing elapsed time for each on exit -verify-dom-info - Verify dominator info (time consuming) -verify-loop-info - Verify loop info (time consuming) -verify-regalloc - Verify during register allocation -verify-region-info - Verify region info (time consuming) -verify-scev - Verify ScalarEvolution's backedge taken counts (slow) -version - Display the version of this program -x86-asm-syntax - Choose style of code to emit from X86 backend:


- Emit AT&T-style assembly


- Emit Intel-style assembly

-p <build-path> is used to read a compile command database.

  • For example, it can be a CMake build directory in which a file named compile_commands.json exists (use -DCMAKE_EXPORT_COMPILE_COMMANDS=\,ON\/ CMake option to get this output). When no build path is specified, a search for compile_commands.json will be attempted through all parent paths of the first input file . See: for an example of setting up Clang Tooling on a source tree.

<source0> ... specify the paths of source files. These paths are

  • looked up in the compile command database. If the path of a file is absolute, it needs to point into CMake's source tree. If the path is relative, the current working directory needs to be in the CMake source tree and the file must be in a subdirectory of the current working directory. "./" prefixes in the relative files will be automatically removed, but the rest of a relative path must be a suffix of a path in the compile command database.

  • For example, to run clang-check on all files in a subtree of the source tree, use:

  • find path/in/subtree -name '*.cpp'|xargs clang-check

  • or using a specific build path:

  • find path/in/subtree -name '*.cpp'|xargs clang-check -p build/path

  • Note, that path/in/subtree and current directory should follow the rules described above.

RELATED TO clang-check-3.4…

The full documentation for clang-check is maintained as a Texinfo manual. If the info and clang-check programs are properly installed at your site, the command

  • info clang-check

should give you access to the complete manual.