Compiler Coding Style
=====================

Coding style for the TurboFan compiler generally follows the Google C++ Style
Guide and the Chromium Coding Style. The notes below are usually just extensions
beyond what the Google style guide already says. If this document doesn't
mention a rule, follow the Google C++ style.


TODOs
-----
We use the following convention for putting TODOs into the code:

  * A TODO(turbofan) implies a performance improvement opportunity.
  * A TODO(name) implies an incomplete implementation.


Use of C++11 auto keyword
-------------------------
Use auto to avoid type names that are just clutter. Continue to use manifest
type declarations when it helps readability, and never use auto for anything
but local variables, in particular auto should only be used where it is obvious
from context what the type is:

  for (auto block : x->blocks())  // clearly a Block of some kind
  for (auto instr : x->instructions())  // clearly an Instruction of some kind

  for (auto b : x->predecessors()) // less clear, better to make it explicit
  for (BasicBlock* b : x->predecessors()) // now clear
