running a pass on multiple files

Hi all,

I am new with LLVM and I have written a pass able to analyze the code and see if functions in a module are pure.
I managed to run the pass with opt -load on a simple (single file) program IR (generated with clang).
Now I am willing to run it on a structured program (probably on a benchmark suite like: http://euler.slu.edu/~fritts/mediabench/) to see how many pure function are identified and how many time it takes to perform the analysis (similarly to the -time-passes option).
Do you have any suggestion on how to do it?

Thank you in advance,

Niko

Hi Niko,

I am new with LLVM and I have written a pass able to analyze the code and see if
functions in a module are pure.

LLVM already has such a pass (-functionattrs) which marks functions with the
readonly attribute if they are "pure", and with the readnone attribute if they
are "const".

I managed to run the pass with opt -load on a simple (single file) programIR
(generated with clang).
Now I am willing to run it on a structured program (probably on a benchmark
suite like: http://euler.slu.edu/~fritts/mediabench/
<http://euler.slu.edu/~fritts/mediabench/>) to see how many pure function are
identified and how many time it takes to perform the analysis (similarly to the
-time-passes option).
Do you have any suggestion on how to do it?

I suggest you run LLVM's nightly testsuite (not the regression testsuite that
comes with LLVM, the full testsuite that you have to check out separately).
Running the testsuite compiles everything to bitcode, so once the testsuite is
done you then have a huge pile of bitcode to do statistics on.

Ciao, duncan.