As title.
I try to write a pass to covert the bitcode with no debug info to the bitcode
with
debug info. I use DIBuilder as a LLVM API so that I can generate DI(Debug info).
Now I have some DIDescriptor , e.g. DIVariable ,DICompileUnit, DISubprogram , I
can use some function to insert metadata.
1. LLVM::Instruction::SetDebugLoc(...) => insert the debug info location like
DILexicalBlock ,and insert !dbg appending an instruction.
2. LLVM::Instruction::setMetadata(...) => insert the metadta and !dbg
appending
an
instruction.
3. DIBuilder::insertDeclare(...) => insert variable declare (like
@llvm.dbg.declare) and metadata.
4. llvm::NamedMDNode::addOperand(...) => insert and Named Metadata. Like
I can use above four function to insert metadata into bitcode. But I can't
just
insert a metadata.
This problem is occur when I want to create an DISubprogram
metadata into bc.
I can't use above four function because this descriptor not
append any instruction and I can't use declare to generate it.
This descriptor is
not a NamedMDNode too. I have try many way to insert it, but I failed...
Can you tell me a right way to insert this MD?
thanks
--
Kevin FangA