<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
          "http://www.w3.org/TR/html4/strict.dtd">
<!-- Material used from: HTML 4.01 specs: http://www.w3.org/TR/html401/ -->
<html>
<head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <title>Hacking on clang</title>
  <link type="text/css" rel="stylesheet" href="menu.css" />
  <link type="text/css" rel="stylesheet" href="content.css" />
</head>
<body>
<!--#include virtual="menu.html.incl"-->
<div id="content">
  <!--*********************************************************************-->
  <h1>Hacking on Clang</h1>
  <!--*********************************************************************-->
  
  <p>This document provides some hints for how to get started hacking
  on Clang for developers who are new to the Clang and/or LLVM
  codebases.</p>
    <ul>
      <li><a href="#docs">Developer Documentation</a></li>
      <li><a href="#debugging">Debugging</a></li>
      <li><a href="#testing">Testing</a></li>
      <li><a href="#irgen">LLVM IR Generation</a></li>
    </ul>
    
  <!--=====================================================================-->
  <h2 id="docs">Developer Documentation</h2>
  <!--=====================================================================-->
  
  <p>Both Clang and LLVM use doxygen to provide API documentation. Their
  respective web pages (generated nightly) are here:</p>
    <ul>
      <li><a href="http://clang.llvm.org/doxygen">Clang</a></li>
      <li><a href="http://llvm.org/doxygen">LLVM</a></li>
    </ul>
      
  <p>For work on the LLVM IR generation, the LLVM assembly language
  <a href="http://llvm.org/docs/LangRef.html">reference manual</a> is
  also useful.</p>

  <!--=====================================================================-->
  <h2 id="debugging">Debugging</h2>
  <!--=====================================================================-->
  
  <p>Inspecting data structures in a debugger:</p>
    <ul>
      <li>Many LLVM and Clang data structures provide
        a <tt>dump()</tt> method which will print a description of the
        data structure to <tt>stderr</tt>.</li>
      <li>The <a href="docs/InternalsManual.html#QualType"><tt>QualType</tt></a>
      structure is used pervasively. This is a simple value class for
      wrapping types with qualifiers; you can use
      the <tt>isConstQualified()</tt>, for example, to get one of the
      qualifiers, and the <tt>getTypePtr()</tt> method to get the
      wrapped <tt>Type*</tt> which you can then dump.</li>
    </ul>
  
  <!--=====================================================================-->
  <h2 id="testing">Testing</h2>
  <!--=====================================================================-->
  
  <p>Clang includes a basic regression suite in the tree which can be
  run with <tt>make test</tt> from the top-level clang directory, or
  just <tt>make</tt> in the <em>test</em> sub-directory. <tt>make
  report</tt> can be used after running the tests to summarize the
  results, and <tt>make VERBOSE=1</tt> can be used to show more detail
  about what is being run.</p>

  <p>For more intensive changes, running
  the <a href="http://llvm.org/docs/TestingGuide.html#testsuiterun">LLVM
  Test Suite</a> with clang is recommended. Currently the best way to
  override LLVMGCC, as in: <tt>make LLVMGCC="ccc -std=gnu89"
  TEST=nightly report</tt> (make sure ccc is in your PATH or use the
  full path).</p>

  <!--=====================================================================-->
  <h2 id="irgen">LLVM IR Generation</h2>
  <!--=====================================================================-->

  <p>The LLVM IR generation part of clang handles conversion of the
    AST nodes output by the Sema module to the LLVM Intermediate
    Representation (IR). Historically, this was referred to as
    "codegen", and the Clang code for this lives
    in <tt>lib/CodeGen</tt>.</p>
  
  <p>The output is most easily inspected using the <tt>-emit-llvm</tt>
    option to clang (possibly in conjunction with <tt>-o -</tt>). You
    can also use <tt>-emit-llvm-bc</tt> to write an LLVM bitcode file
    which can be processed by the suite of LLVM tools
    like <tt>llvm-dis</tt>, <tt>llvm-nm</tt>, etc. See the LLVM
    <a href="http://llvm.org/docs/CommandGuide/">Command Guide</a>
    for more information.</p>

</div>
</body>
</html>
