[LLVMdev] Question about adding a pass in LLVM
Reid Spencer
rspencer at reidspencer.com
Tue Jun 19 05:08:15 PDT 2007
Hi Fiona,
Fiona Sheen wrote:
> Hi, I've met a problem when I am trying llvm.
> I've added a small pass in it, and when I define or use an object of
> APInt class, it will get the following output while running:
>
> $ opt -load hello.so -hello test.bc -o test.hello.bc
> opt: CommandLine Error: Argument 'disable-opt' defined more than once!
> opt: CommandLine Error: Argument 'disable-inlining' defined more than
> once!
> opt: CommandLine Error: Argument 'strip-debug' defined more than once!
> opt: CommandLine Error: Argument 'verify-each' defined more than once!
> opt: CommandLine Error: Argument 'disable-verify' defined more than once!
> opt: CommandLine Error: Argument 'disable-output' defined more than once!
> opt: CommandLine Error: Argument 'p' defined more than once!
> opt: CommandLine Error: Argument 'f' defined more than once!
> opt: CommandLine Error: Argument 'o' defined more than once!
> opt: CommandLine Error: Argument 'argpromotion' defined more than once!
> ..... (it just repeated outputting the last line, without stop...)
>
> Has anybody met the similiar problem with me?
When you link the hello.so module, do not link *any* LLVM code into it.
The references will get resolved at run time. This looks to me like
you've linked some of the opt code itself into hello.so. I suggest you
follow the pattern in lib/Transforms/Hello. In particular this means a)
you build your "hello" module in a separate directory, b) the Makefile
looks just like the one in lib/Transforms/Hello.
In this arrangement, it is possible (but unlikely) that you could end up
with unresolved symbols (because your module references something in
LLVM that is not linked into opt). If that is the case, you have two
options: a) copy the code from LLLVM into your module and compile and
statically link it into your module, or b) use a different mechanism
(code) to achieve the same end (e.g. if you were using SmallPtrSet, just
use std::set).
Hope this helps.
Reid.
>
>
> --
> Yours,
> Fiona
>
>------------------------------------------------------------------------
>
>_______________________________________________
>LLVM Developers mailing list
>LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
More information about the llvm-dev
mailing list