[llvm-commits] [llvm] r137497 - /llvm/trunk/docs/CodingStandards.html

Jakob Stoklund Olesen stoklund at 2pi.dk
Fri Aug 12 13:59:34 PDT 2011


On Aug 12, 2011, at 1:19 PM, John McCall wrote:

> I would be willing to allow an exception for very short variable
> names which are obviously abbreviations, since those should
> never be non-local anyway.

It's an established convention in libCodeGen to use abbreviations for class members representing the current context:

class AsmPrinter : public MachineFunctionPass {
    TargetMachine &TM;
    const MCAsmInfo *MAI;
    const MachineFunction *MF;
    MachineModuleInfo *MMI;
    MachineLoopInfo *LI;
    DwarfDebug *DD;
    DwarfException *DE;
}

The common abbreviations are mostly standardized which helps a lot.  Terms like MF, MRI, TRI, and TII are instantly recognizable.  These objects are effectively singletons within a pass, so they don't need real names.  Sometimes they are locals, sometimes they are members, it doesn't matter - there is only one object.

This convention is very convenient and does not cause confusion once you are used to it.

For the less common analyses, I have started using longer names:

class RAGreedy {
  MachineDominatorTree *DomTree;
  MachineLoopInfo *Loops;
  EdgeBundles *Bundles;
  SpillPlacement *SpillPlacer;
  LiveDebugVariables *DebugVars;
}

Obviously, using LI for MachineLoopInfo is misguided ;-)

/jakob




More information about the llvm-commits mailing list