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

John Criswell criswell at illinois.edu
Sun Oct 6 09:33:58 PDT 2013


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.


> 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.

-- John T.

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


More information about the llvm-dev mailing list