[LLVMdev] How to use LLVM optimizations with clang

Abdul Wahid Memon engrwahidmemon at gmail.com
Tue Jun 12 03:32:22 PDT 2012


Sure. The comb.ll and data files are attached and can be invoked as
the following

$ lli comb.ll data -c

Regards

Shahzad

On Tue, Jun 12, 2012 at 12:28 PM, Duncan Sands <baldrick at free.fr> wrote:
> Hi,
>
>
>> Yes, they both are exactly the same.
>
>
> then I don't know what is going on.  I suggest you send a copy of comb.ll to
> the
> list so that we can see for ourselves.
>
>
> Ciao, Duncan.
>
>>
>> Regards
>>
>> Shahzad
>>
>> On Tue, Jun 12, 2012 at 9:38 AM, Duncan Sands<baldrick at free.fr>  wrote:
>>>
>>> Hi, is the comb.ll used here:
>>>
>>>
>>>> $ time lli ./comb.ll
>>>>
>>>> then the runtime is
>>>>
>>>> real    0m2.671s
>>>> user    0m2.640s
>>>> sys     0m0.020s
>>>>
>>>> But, if I convert this same file comb,ll in to native binary
>>>
>>>
>>>
>>> the same as the comb.ll used here:
>>>
>>>> $ clang comb.ll
>>>
>>>
>>>
>>> ?
>>>
>>> Ciao, Duncan.
>>>
>>>
>>>>
>>>> and execute it, then the runtime increases alot
>>>>
>>>> $ time ./a.out
>>>>
>>>> real    0m8.008s
>>>> user    0m7.964s
>>>>
>>>> The binary generated directly by clang have runtime of around 2
>>>> seconds while generated after LLVM IR have around 8 secs but LLVM
>>>> bytecode having same optimizations when executed with lli have runtime
>>>> of around 2 secs.
>>>>
>>>> What steps are exactly taken by clang to produce the binary in order
>>>> to achieve the runtime of around 2 secs. If it is a question of link
>>>> time optimizations then how can we achieve that?
>>>>
>>>> Best Regards
>>>>
>>>> Shahzad
>>>>
>>>> On Fri, Jun 8, 2012 at 7:29 PM, Abdul Wahid Memon
>>>> <engrwahidmemon at gmail.com>    wrote:
>>>>>
>>>>>
>>>>> Thanks Duncan
>>>>>
>>>>> It was really helpful.
>>>>>
>>>>> Regards
>>>>>
>>>>> Abdul
>>>>>
>>>>> On Fri, Jun 8, 2012 at 7:23 PM, Duncan Sands<baldrick at free.fr>
>>>>>  wrote:
>>>>>>
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>>
>>>>>>> If I compile the program using the following command line i.e.
>>>>>>>
>>>>>>> $ clang -O3 -lm *.c
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> this may be doing link time optimization.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> then
>>>>>>>
>>>>>>> $ time ./a.out
>>>>>>>
>>>>>>> real    0m2.606s
>>>>>>> user    0m2.584s
>>>>>>> sys     0m0.012s
>>>>>>>
>>>>>>> BUT, if I use all the optimizations enabled with -O3 but specify them
>>>>>>> explicity i.e.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> you can just use "opt -O3" here.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> for F in *.c ; do B=`basename $F .c` ; gcc
>>>>>>> -fplugin=/damm/compilers/dragonegg-3.1.src/dragonegg.so -S -o - $F
>>>>>>> -fplugin-arg-dragonegg-emit-ir | opt -targetlibinfo -no-aa -tbaa
>>>>>>> -basicaa -globalopt -ipsccp -deadargelim -instcombine -simplifycfg
>>>>>>> -basiccg -prune-eh -inline -functionattrs -argpromotion
>>>>>>> -scalarrepl-ssa -domtree -early-cse -simplify-libcalls
>>>>>>> -lazy-value-info -jump-threading -correlated-propagation -simplifycfg
>>>>>>> -instcombine -tailcallelim -simplifycfg -reassociate -domtree -loops
>>>>>>> -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch
>>>>>>> -instcombine -scalar-evolution -loop-simplify -lcssa -indvars
>>>>>>> -loop-idiom -loop-deletion -loop-unroll -memdep -gvn -memdep
>>>>>>> -memcpyopt -sccp -instcombine -lazy-value-info -jump-threading
>>>>>>> -correlated-propagation -domtree -memdep -dse -adce -simplifycfg
>>>>>>> -instcombine -strip-dead-prototypes -globaldce -constmerge -preverify
>>>>>>> -domtree -verify -o $B.ll ; done
>>>>>>>
>>>>>>> $ clang *.ll
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> Try clang -O3 *.ll
>>>>>>
>>>>>> If it makes a difference then that means that clang is linking all
>>>>>> these
>>>>>> files
>>>>>> together to form one mega file which it is then optimizing.
>>>>>>
>>>>>> Ciao, Duncan.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> then
>>>>>>>
>>>>>>> time ./a.out
>>>>>>>
>>>>>>> real    0m7.791s
>>>>>>> user    0m7.760s
>>>>>>> sys     0m0.008s
>>>>>>>
>>>>>>> Am I missing something here?
>>>>>>>
>>>>>>> Though directly compiling files i.e.
>>>>>>>
>>>>>>> $ clang *.c
>>>>>>>
>>>>>>> results in
>>>>>>>
>>>>>>> time ./a.out
>>>>>>>
>>>>>>> real    0m10.167s
>>>>>>> user    0m10.121s
>>>>>>> sys     0m0.016s
>>>>>>>
>>>>>>> Regards
>>>>>>>
>>>>>>> Shahzad
>>>>>>>
>>>>>>> On Fri, Jun 8, 2012 at 7:00 PM, Duncan Sands<baldrick at free.fr>
>>>>>>>  wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>>
>>>>>>>>> I tried it with -o - but its producing an error
>>>>>>>>>
>>>>>>>>> gcc: fatal error: cannot specify -o with -c, -S or -E with multiple
>>>>>>>>> files
>>>>>>>>>
>>>>>>>>> What you suggest?
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> what I wrote:
>>>>>>>>
>>>>>>>>>>  for F in *.c ; do B=`basename $F .c` ; gcc
>>>>>>>>>> -fplugin=/path/to/dragonegg.so
>>>>>>>>>> -S -o - $F -fplugin-arg-dragonegg-emit-ir | opt -adce -o $B.ll ;
>>>>>>>>>> done
>>>>>>>>>>  clang *.ll
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks to the for loop and passing $F to gcc, you are no longer
>>>>>>>> using
>>>>>>>> gcc
>>>>>>>> with
>>>>>>>> multiple files.  So if you are getting that message then you are
>>>>>>>> don't
>>>>>>>> what
>>>>>>>> I
>>>>>>>> suggested.
>>>>>>>>
>>>>>>>> Ciao, Duncan.
>>>>>>>>
>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Ciao, Duncan.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> $ clang *.s
>>>>>>>>>>>
>>>>>>>>>>> Regards
>>>>>>>>>>>
>>>>>>>>>>> Shahzad
>>>>>>>>>>>
>>>>>>>>>>> On Fri, Jun 8, 2012 at 9:10 AM, Duncan Sands<baldrick at free.fr>
>>>>>>>>>>>  wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Hi Shahzad,
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> Is it possible that we can use LLVM optimization beside O1, O2,
>>>>>>>>>>>>> O3
>>>>>>>>>>>>> along with dragonegg plugin?
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> sure, try this:
>>>>>>>>>>>>
>>>>>>>>>>>>  gcc -fplugin=path/dragonegg.so ...other_options_here... -S -o -
>>>>>>>>>>>> -fplugin-arg-dragonegg-emit-ir
>>>>>>>>>>>> -fplugin-arg-dragonegg-llvm-ir-optimize=0
>>>>>>>>>>>> |
>>>>>>>>>>>> opt -pass1 -pass2 ...
>>>>>>>>>>>>
>>>>>>>>>>>> Here -fplugin-arg-dragonegg-emit-ir tells it to output LLVM IR
>>>>>>>>>>>> rather
>>>>>>>>>>>> than
>>>>>>>>>>>> target assembler.  You can also use -flto here.
>>>>>>>>>>>>
>>>>>>>>>>>> -fplugin-arg-dragonegg-llvm-ir-optimize=0 disables the standard
>>>>>>>>>>>> set
>>>>>>>>>>>> of
>>>>>>>>>>>> LLVM
>>>>>>>>>>>> optimizations.
>>>>>>>>>>>>
>>>>>>>>>>>> In general, if a front-end can produce LLVM IR then you can do
>>>>>>>>>>>> this,
>>>>>>>>>>>> by
>>>>>>>>>>>> outputting the IR and passing it to "opt".
>>>>>>>>>>>>
>>>>>>>>>>>> Ciao, Duncan.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Regards
>>>>>>>>>>>>>
>>>>>>>>>>>>> Shahzad
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Thu, Jun 7, 2012 at 10:59 PM, Abdul Wahid Memon
>>>>>>>>>>>>> <engrwahidmemon at gmail.com>            wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Thanks alot Chad for these quick and fine responses.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Regards
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Abdul
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Thu, Jun 7, 2012 at 10:57 PM, Chad
>>>>>>>>>>>>>> Rosier<mcrosier at apple.com>
>>>>>>>>>>>>>>  wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Jun 7, 2012, at 1:53 PM, Abdul Wahid Memon wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks again chad. One more question please.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Is it possible that I can use these optimization using
>>>>>>>>>>>>>>>> dragonegg
>>>>>>>>>>>>>>>> plugin
>>>>>>>>>>>>>>>> somehow?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I haven't a clue.  Maybe Duncan can answer that?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>  Chad
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Regards
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Shahzad
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Thu, Jun 7, 2012 at 10:51 PM, Chad
>>>>>>>>>>>>>>>> Rosier<mcrosier at apple.com>
>>>>>>>>>>>>>>>>  wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Jun 7, 2012, at 1:48 PM, Abdul Wahid Memon wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Thu, Jun 7, 2012 at 10:44 PM, Chad
>>>>>>>>>>>>>>>>>> Rosier<mcrosier at apple.com>
>>>>>>>>>>>>>>>>>>  wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> On Jun 7, 2012, at 1:39 PM, Abdul Wahid Memon wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Thanks alot Chad for quick response. Does this means
>>>>>>>>>>>>>>>>>>>> that,
>>>>>>>>>>>>>>>>>>>> we
>>>>>>>>>>>>>>>>>>>> can
>>>>>>>>>>>>>>>>>>>> not
>>>>>>>>>>>>>>>>>>>> use LLVM optimizations except O1, O2, O3, O4 and
>>>>>>>>>>>>>>>>>>>> unroll-loops
>>>>>>>>>>>>>>>>>>>> with
>>>>>>>>>>>>>>>>>>>> clang?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Try using the -debug-pass=Arguments options to see what
>>>>>>>>>>>>>>>>>>> passes
>>>>>>>>>>>>>>>>>>> are
>>>>>>>>>>>>>>>>>>> being run at each optimization level.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Yes, I have seen those optimization but I want to disable
>>>>>>>>>>>>>>>>>> all
>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>> default optimization (-O0) and specify them individually
>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>> test
>>>>>>>>>>>>>>>>>> their
>>>>>>>>>>>>>>>>>> effect.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> 1. Generate the bitcode/ir with -O0
>>>>>>>>>>>>>>>>> 2. Run opt with the optimization in question.  You should
>>>>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>>> able
>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>> specify most any pass with opt.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> E.g.,
>>>>>>>>>>>>>>>>>>> clang -O[0-3] -mllvm -debug-pass=Arguments foo.c.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> One more thing I would like to know that If I want to
>>>>>>>>>>>>>>>>>>>> process
>>>>>>>>>>>>>>>>>>>> multiple
>>>>>>>>>>>>>>>>>>>> modules with opt at the same time like
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> opt -adce *.bc
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> I don't think this will work.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> ok.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> then how is it possible with opt in one go, if I process
>>>>>>>>>>>>>>>>>>>> all
>>>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>> bytecode files within Makefile.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> You should be able to define a rule in the Makefile to
>>>>>>>>>>>>>>>>>>> compile
>>>>>>>>>>>>>>>>>>> your
>>>>>>>>>>>>>>>>>>> bitcode/IR files.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> ok. I got the point.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Thanks alot
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Shahzad
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>  Chad
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Thanks.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Shahzad
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> On Thu, Jun 7, 2012 at 9:22 PM, Chad
>>>>>>>>>>>>>>>>>>>> Rosier<mcrosier at apple.com>
>>>>>>>>>>>>>>>>>>>>  wrote:
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> On Jun 7, 2012, at 10:59 AM, Abdul Wahid Memon wrote:
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Hello everyone
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> I am trying to use some LLVM optimizations like -die
>>>>>>>>>>>>>>>>>>>>>> or
>>>>>>>>>>>>>>>>>>>>>> -adce.
>>>>>>>>>>>>>>>>>>>>>> Is
>>>>>>>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>>>>>>> possible to use them along clang?
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Or is there a way where these optimization can be
>>>>>>>>>>>>>>>>>>>>>> passed
>>>>>>>>>>>>>>>>>>>>>> on
>>>>>>>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>>>>> "opt"
>>>>>>>>>>>>>>>>>>>>>> tool through clang, if opt is being used by clang
>>>>>>>>>>>>>>>>>>>>>> behind
>>>>>>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>>>>>>> scenes?
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> No, opt only works on llvm IR/bitcode.  You can
>>>>>>>>>>>>>>>>>>>>> generate
>>>>>>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>>>>>>> like
>>>>>>>>>>>>>>>>>>>>> this:
>>>>>>>>>>>>>>>>>>>>> clang -c foo.c -emit-llvm -o foo.bc
>>>>>>>>>>>>>>>>>>>>> or
>>>>>>>>>>>>>>>>>>>>> clang -S foo.c -emit-llvm -o foo.ll
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Then you can run the optimization(s):
>>>>>>>>>>>>>>>>>>>>> opt -adce foo.bc -o foo-adce.bc
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Then you can compile using clang
>>>>>>>>>>>>>>>>>>>>> clang -c foo-adce.bc -o foo-adce.o
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>  Chad
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Thanks alot
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Regards
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Shahzad
>>>>>>>>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>>>>>>>>> LLVM Developers mailing list
>>>>>>>>>>>>>>>>>>>>>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>>>>>>>>>>>>>>>>>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>
>>>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: comb.ll
Type: application/octet-stream
Size: 92552 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120612/738865c9/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: data
Type: application/octet-stream
Size: 270015 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120612/738865c9/attachment-0001.obj>


More information about the llvm-dev mailing list