title: What do the X(), Y() and Z() macros do in LLVM?
body: <p>I found this code in Sparc LLVM backend:</p>
  
  <pre><code>extern "C" void LLVMInitializeSparcTargetInfo() {
    RegisterTarget&lt;Triple::sparc, /*HasJIT=*/true&gt; X(TheSparcTarget, "sparc",
                                                     "Sparc");
    RegisterTarget&lt;Triple::sparcv9, /*HasJIT=*/true&gt; Y(TheSparcV9Target,
                                                       "sparcv9", "Sparc V9");
    RegisterTarget&lt;Triple::sparcel, /*HasJIT=*/true&gt; Z(TheSparcelTarget,
                                                       "sparcel", "Sparc LE");
  }
  </code></pre>
  
  <p>I don't understand what these <code>X</code>, <code>Y</code>, <code>Z</code> macros do and I cannot find any definition or documentation for them.</p>