Hello everyone, I am trying to write a trivial adding metadata transformation pass. I have Test.bc the target on which I want to perform transformations. First, I compile with clang++ my target program and I have my resulting Test.bc. I save it under Test1.bc. As a particular example, I have " %myDimension = alloca %class.ThreeDimension, align 4 ". Second, I apply my pass : //..../llvm/Release+Asserts/bin/opt -load //home/alex/llvm/Release+Asserts/lib/my_test_metadata.so -my-metadata //..../llvm/tools/clang/woRKSPACE/Test.bc Test1.bc and Test.bc are the same. In Test.bc no metadata is added. However, if in my transformation pass I debug with errs(), metadata is displayed ( " %myDimension = alloca %class.ThreeDimension, align 4, !sensitive !0, !md !1 " ), but the Test.bc file is not modified (still have " %myDimension = alloca %class.ThreeDimension, align 4 "). Can you tell me how can I make the transformations persistent? I have : namespace { struct metadata : public FunctionPass { const Function *F; static char ID; // Pass identifcation, replacement for typeid metadata() : FunctionPass(ID) { //initializeMemDepPrinterPass(*PassRegistry::getPassRegistry()); } virtual bool runOnFunction(Function &F); virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); } // virtual void releaseMemory() { // F = 0; // } }; } char metadata::ID = 0; static RegisterPass<metadata> X("my-metadata", "Adding metadata", false, true); Thank you ! -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130213/b56ebbb4/attachment.html>