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