[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