[LLVMdev] Create target with alternate syntax for globals?

NAKAMURA Takumi geek4civic at gmail.com
Sat Sep 8 17:50:01 PDT 2012


2012/9/9 ryan baird <ryanrbaird at gmail.com>:
> I'm working on building a target for llvm that's the intermediate language
> of another compiler, so that the other compiler can benifit from llvm's
> optimization passes.
>
> I essentially made a copy of the mips backend, and then started changing the
> output to match the intermediate language of the compiler.  Most of the
> output can be overriden, but I haven't figured out how to change the way
> globals are emitted.
>
> The AsmPrinter::EmitGlobalVariable function in the
> llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp file is not virtual; if I try to
> override it, I get a "multiple definitions" error.  To emit the global, it
> just calls the OutputStreamer.EmitCommonSymbol method.  Again, this has
> become a problem because I don't want the default output for global symbols.
> If I can't override this method, how can I change the way that my target
> outputs globals variables?

Ryan,

On which version are you working? I can see, since r93858;

Author: Chris Lattner <sabre at nondot.org>
Date:   Tue Jan 19 14:38:33 2010

+    virtual void EmitGlobalVariable(const GlobalVariable *GV);

It seems XCoreAsmPrinter overrides some methods.

...Takumi



More information about the llvm-dev mailing list