newbie with pass registering Problem


This is my first time with llvm. I'm still learning and really need help.

I wrote only one Function Pass, which uses another Function Pass (blockNrs), and registered this:
RegisterPass<FunctionAnalysis> X("gasched", "Genom Scheduling Pass");

When I compile my sourcecode, everything was okay. But when I tried to test it, i got this error Message:

nicole@fpga3:~/test$ make
opt -load /iss/fpga3/nicole/llvm-2.2/Debug/lib/ -load /iss/fpga3/nicole/llvm-2.2/Debug/lib/ -help < opt.bc >/dev/null
Two passes with the same argument (-gasched) attempted to be registered!
/bin/sh: line 1: 15334 Abgebrochen opt -load /iss/fpga3/nicole/llvm-2.2/Debug/lib/ -load /iss/fpga3/nicole/llvm-2.2/Debug/lib/ -help <opt.bc >/dev/null
make: *** [opt] Fehler 134

Could you please help me. I don't understand what I have made wrong. The Makefile for the test is written like this:

all: opt test.ll opt.ll

opt: opt.bc
        opt -load /iss/fpga3/nicole/llvm-2.2/Debug/lib/ -load /iss/fpga3/nicole/llvm-2.2/Debug/lib/ -help < opt.bc$

opt.ll: opt.bc
        llvm-dis opt.bc -f -o opt.ll

opt.bc: test.bc
        opt -verify -mem2reg -prune-eh -verify <test.bc >opt.bc

test.ll: opt.bc
        llvm-dis test.bc -f -o test.ll

test.bc: test.c
        llvm-gcc -c -emit-llvm test.c -o test.bc

Thank you for your help.


Did you use static ID ? For example ...

   class VISIBILITY_HIDDEN GVN : public FunctionPass {
     bool runOnFunction(Function &F);
     static char ID; // Pass identification, replacement for typeid
     GVN() : FunctionPass((intptr_t)&ID) { }