[LLVMdev] Suggestion on simple optimization pass for a beginner?

Rekha R rekharamapai at nitc.ac.in
Mon Oct 7 04:46:25 PDT 2013


On Sun, Oct 6, 2013 at 10:03 PM, John Criswell <criswell at illinois.edu>wrote:

>  On 10/6/13 7:23 AM, Rekha R wrote:
>
>    Hello,
>
>  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:
>
>  1. Is there a way to disable constant folding during IR development by
> clang?
>
>
> 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.
>
>

>  Yes. I tried both ways. It didn't work. The IR generated by clang has
> constant expressions folded. Seems clang does this opt during IR
> generations. Couldn't get the motivation why.
>
>   2. If not, can someone suggest a simple optimization (simple in
> complexity on the lines of constant folding) to get started?
>
>
> Constant propagation is one good candidate, as is dead code elimination,
> sparse conditional constant propagation, aggressive dead code elimination,
> strength reduction, etc.
>
> 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.
>
> Thanks.


> -- John T.
>
>


-- 
Rekha
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131007/e8eac370/attachment.html>


More information about the llvm-dev mailing list