[LLVMdev] Adding a module in a pass
    Bjorn Reese 
    breese at mail1.stofanet.dk
       
    Tue Aug  9 06:49:36 PDT 2011
    
    
  
I have an optimization pass (FunctionPass) where I need to add global
constructors.
For cleaness sake I decided to add these in my own module. My module
is created in my FunctionPass constructor:
   MyPass()
     : FunctionPass(ID),
       myModule("my_module", getGlobalContext())
   {}
I generate an llvm.global_ctor global variable in my module, and I add
my global constructors there. This appears to be correct. Here is a
dump of the module after the pass:
   ; ModuleID = 'my_module'
   @my_literal = internal constant [6 x i8] c"Hello\00"
   @llvm.global_ctors = appending global [1 x { i32, void ()* }] [void 
() { i32 65535, void ()* @my_global_constructor }]
   define void @my_global_constructor() {
     %puts = call i32 @puts(i8* getelementptr inbounds ([6 x i8]* 
@my_literal, i32 0, i32 0))
   }
   declare i32 @puts(i8* nocapture) nounwind
My problem is that this module is not linked into the executable.
Do I need to insert the module somewhere?
    
    
More information about the llvm-dev
mailing list