[cfe-dev] Target specific passes in clang.

Sanjiv Gupta sanjiv.gupta at microchip.com
Mon Feb 22 19:26:32 PST 2010


On Sun, 2010-02-21 at 09:32 -0800, Daniel Dunbar wrote:

> It sounds like what you want is:
> --
> $ clang -c -emit-llvm -o a.bc a.c
> $ clang -c -emit-llvm -o b.bc b.c
> $ clang -emit-llvm -o t.bc a.bc b.bc # Let's suppose this ran LTO, in
> practice we may need a new syntax.
Right. Currently we use llvm-ld here.

> $ clang -o t t.bc # This would run code generation, assembly, link.
> --
> where in step (4) you had the option of defining some passes to be run
> before code generation.
>
> Is this what you are looking for?
> 
Precisely. 
$ clang a.c b.c 

should do all the 4 steps above. Much like a cross compiler driver, lets
say xyz-gcc.

- Sanjiv


>  - Daniel
> 
> > All, in one program. Obviously assembler and linker would be separate
> > programs, which the driver should be able invoke.
> >
> > If clang can do till .s step, that is also great. But note that I want to
> > run some pic16 specific module passes in between.
> >
> > - Sanjiv
> >
> >
> >
> > ----- Original Message ----- From: "Daniel Dunbar" <daniel at zuster.org>
> > To: "Sanjiv Gupta" <sanjiv.gupta at microchip.com>
> > Cc: <cfe-dev at cs.uiuc.edu>
> > Sent: Saturday, February 20, 2010 3:48 PM
> > Subject: Re: [cfe-dev] Target specific passes in clang.
> >
> >
> > Hi Sanjiv,
> >
> > I'm not exactly sure what you are asking for.
> >
> > Clang already runs various passes as part of -O0, -O1, etc. Adding a
> > target hook for that would be relatively straightforward, although we
> > want to make sure that one doesn't have to link in LLVM just to run
> > -fsyntax-only.
> >
> > I also plan to make the clang driver accept .ll and .bc files,
> > eventually, but I'm not sure if this is what you are asking.
> >
> > - Daniel
> >
> > On Thu, Feb 18, 2010 at 10:15 PM, Sanjiv Gupta
> > <sanjiv.gupta at microchip.com> wrote:
> >>
> >> I am looking for a single driver that should be able to generate the
> >> assembly for a given target.
> >>
> >> It should be able to generate the bitcode, run standard LTO passes, run
> >> target specific module passes and final function passes to generate
> >> assembly. So pretty much clang -emit-llvm-bc, llvm-ld , opt and llc
> >> functionality in a single executable.
> >>
> >> Besides, the option to be able to invoke native assembler and native
> >> linker
> >> to generate final executable should also be handled by this driver.
> >>
> >> Currently, clang takes a -triple option to specify the target.
> >> Can a target schedule these things in clang?
> >>
> >> Right now we are using a .td based compilerdriver plugin to invoke these
> >> different set of executables.
> >>
> >> - Sanjiv
> >>
> >> _______________________________________________
> >> cfe-dev mailing list
> >> cfe-dev at cs.uiuc.edu
> >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> >>
> >>
> >
> >




More information about the cfe-dev mailing list