<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 10/6/13 7:23 AM, Rekha R wrote:<br>
    </div>
    <blockquote
cite="mid:CADFTsskRDcuvovpYLUKFJ1_b7qi7v_Be6_PKteCX93aC-P6iHQ@mail.gmail.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      <div dir="ltr">
        <div>
          <div>
            <div>
              <div>
                <div>Hello,<br>
                  <br>
                </div>
                I am a beginner in LLVM development with the aim of
                writing a new optimization pass. But then before I could
                do that, I thought of writing simple passes. I could
                successfully implement the Hello pass as given in the
                doc. Then I wrote a simple Constant Folding pass -
                evaluate instructions of the form c=10+20 and replace
                all uses of c with 30. Only later did I realize that
                Clang does this optimization while building the IR.
                Hence I couldn't check whether my constant folding pass
                is "working". I have two questions:<br>
                <br>
              </div>
              1. Is there a way to disable constant folding during IR
              development by clang?<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    There are probably multiple ways to do this.  One quick way would be
    to try different optimization levels (-O1 or -O3, for example). 
    Another way would be to generate an LLVM assembly file (-S
    -emit-llvm) and to assemble that using llvm-as.<br>
    <br>
    <br>
    <blockquote
cite="mid:CADFTsskRDcuvovpYLUKFJ1_b7qi7v_Be6_PKteCX93aC-P6iHQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <div>2. If not, can someone suggest a simple optimization
            (simple in complexity on the lines of constant folding) to
            get started?<br>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    Constant propagation is one good candidate, as is dead code
    elimination, sparse conditional constant propagation, aggressive
    dead code elimination, strength reduction, etc.<br>
    <br>
    Instrumentation passes can also be good for practice.  For example,
    instrumenting every load or store with a call to a run-time function
    to print the accessed address is pretty simple.<br>
    <br>
    -- John T.<br>
    <br>
  </body>
</html>