On 7/25/05, Reid Spencer <reid at x10sys.com> wrote:> I think that the answer is that llc is intended to be the final compiler > of executable output. Running "general" passes in llc was never part of > the design. It just runs machine passes, assuming that its bytecode > input is already optimized.OK, that makes sense.> What you're looking for is a program that is > the combination of opt and llc. Eventually, the llvmc program intends to > be that program. It currently runs most of the passes run by gccld and > also provides a -load option to allow extension of pass sets. However, > llvmc is an unfinished work and a bit more cumbersome to use.Oh, I was a little confused, then - I thought llc actually was llvmc.> Why not just create your pass as a shared object and: > > opt -load mypass.so -mypass | llcMy pass is an implementation of an analysis group that I wanted to make available to machine passes as well as optimization passes. So I really do want it in llc, not just its output. I could easily change my llc to just load my pass, I just wanted to check if there was a better way first. Specifically, should I dive into llvmc and help flush out bugs? (how unfinished is it?) Thanks, -mike> On Mon, 2005-07-25 at 19:07 -0700, Michael McCracken wrote: > > Hi - I wanted to make a pass available for use with llc, and found > > that even though there is a PassInfo::LLC value, it isn't currently > > used. > > > > If you compare analyze.cpp and opt.cpp to llc.cpp, the first two find > > appropriate pass names with a FilteredPassNameParser and create them, > > but llc does not - it just gets all the passes it wants through the > > TargetMachine. > > > > Is there a particular reason not to create general Passes from llc? > > > > Thanks, > > mike > > > > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.2.6 (GNU/Linux) > > iD8DBQBC5bwB3J9yEj6nvGcRAqWkAJwOTMMmIon6jnXJjzadIKU7wefyGgCfdAg/ > OEdCG5PnRYdlMiLkcuD+ZV0> =USOS > -----END PGP SIGNATURE----- > > >-- Michael McCracken UCSD CSE PhD Candidate research: http://www.cse.ucsd.edu/~mmccrack/ misc: http://michael-mccracken.net/blog/
On Mon, 2005-07-25 at 21:48 -0700, Michael McCracken wrote:> On 7/25/05, Reid Spencer <reid at x10sys.com> wrote: > > Why not just create your pass as a shared object and: > > > > opt -load mypass.so -mypass | llc > > My pass is an implementation of an analysis group that I wanted to > make available to machine passes as well as optimization passes. So I > really do want it in llc, not just its output. > > I could easily change my llc to just load my pass, I just wanted to > check if there was a better way first.That sounds like the simplest thing to do. Loadable analyses in llc would be a good feature to add if you wanted to contribute that back. That way any machine level analyses that are needed could be loaded (presumably via llvmc).> Specifically, should I dive > into llvmc and help flush out bugs? (how unfinished is it?)Its not so much buggy as it is incomplete. It will faithfully compile programs per the language configuration files using whatever tools are required for a given language. See the configuration files in llvm/tools/llvmc directory for examples. The main thing that is lacking is not so much llvmc as it is llvm-ld which currently can't produce native executables well. This may not matter for your project. There's probably a few other things wrong with it but I forget the details. To see it in action, check out the samples directory in the Stacker project. It currently uses llvmc to compile the sample programs. Same goes for the test directory. Reid. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 189 bytes Desc: This is a digitally signed message part URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20050725/c4f1690c/attachment.sig>
On 7/25/05, Reid Spencer <reid at x10sys.com> wrote:> On Mon, 2005-07-25 at 21:48 -0700, Michael McCracken wrote: > > On 7/25/05, Reid Spencer <reid at x10sys.com> wrote: > > > Why not just create your pass as a shared object and: > > > > > > opt -load mypass.so -mypass | llc > > > > My pass is an implementation of an analysis group that I wanted to > > make available to machine passes as well as optimization passes. So I > > really do want it in llc, not just its output. > > > > I could easily change my llc to just load my pass, I just wanted to > > check if there was a better way first. > > That sounds like the simplest thing to do. Loadable analyses in llc > would be a good feature to add if you wanted to contribute that back. > That way any machine level analyses that are needed could be loaded > (presumably via llvmc).OK, I have a version of llc that creates passes which are registered as PassInfo::LLC. It's essentially a clone of the code in opt and analyze. Since I'm modifying llc, I have a couple small questions about that code: opt and analyze (and a couple of other places) add a verifier pass, but llc doesn't. This would seem to make sense for llc as well - should I add it, with the corresponding hidden -no-verify option?> > Specifically, should I dive > > into llvmc and help flush out bugs? (how unfinished is it?) > > Its not so much buggy as it is incomplete. It will faithfully compile > programs per the language configuration files using whatever tools are > required for a given language. See the configuration files in > llvm/tools/llvmc directory for examples. The main thing that is lacking > is not so much llvmc as it is llvm-ld which currently can't produce > native executables well. This may not matter for your project. There's > probably a few other things wrong with it but I forget the details. To > see it in action, check out the samples directory in the Stacker > project. It currently uses llvmc to compile the sample programs. Same > goes for the test directory.OK, sounds like the solution to my problem is to modify llc, and is sort of unrelated to llvmc, so I'll stick with what I was doing. Thanks, -mike -- Michael McCracken UCSD CSE PhD Candidate research: http://www.cse.ucsd.edu/~mmccrack/ misc: http://michael-mccracken.net/blog/