[LLVMdev] Adding and removing functions from Module

Pablo Barrio pbarrio at die.upm.es
Mon Mar 28 09:06:03 PDT 2011


Hello,

I am new to LLVM so apologies for a possibly basic question. I am trying 
to autopartition some codes into pieces so that I can compile these 
pieces with different backends. My idea is to create one module per 
desired piece, and transfer the functions from the module I am visiting 
to these newly created modules, deleting the function in the previous 
module and adding it to the new one.

At this point, I can create new modules but I cannot figure out how to 
delete them from the current module or how to add an object of type 
"Function" to a module. My first attempt is something such as

     Module &m1; // Created and filled somewhere else
     Module &m2("m2", getGlobalContext());

     for (Module::iterator fIt = m1.begin(); fIt != m1.end(); fIt++){

         m2.getOrInsertFunction(*fIt);
         // Here I should delete the function from the original module, 
no clues about how to do it
     }

but no luck; the error is that getOrInsertFunction() does not allow to 
be called with that parameter. I could use other prototypes of 
getOrInsertFunction(), but these seem to be a bit overkill: create 
another function and "configure" all the parameters again, etc. Any 
hints or pointers to previous threads?

Also, if somebody has any other idea about how to partition the code to 
pass it to different backends, it will be welcome.

Thanks in advance,

-- 
Pablo Barrio
Dpto. Ing. Electrónica - E.T.S.I. Telecomunicación
Despacho C-203
Avda. Complutense s/n, 28040 Madrid
Tlf. 915495700 ext. 4234
@: pbarrio at die.upm.es




More information about the llvm-dev mailing list