I'm converting LLVM Bitcode into assembly file via pass manager, e.g.:
targetMachine->addPassesToEmitFile(passManager, output, TargetMachine::CGFT_AssemblyFile));
That works fine, but in some cases lifetime.start/end intrinsics are not replaced and I end up with external symbols for the lifetime.start/end intrinsics.
I'd appreciate if anyone can give some hints and answer the following questions about intrinsics in general and for the lifetime.start/end intrinsics in this case:
1. What affects the lowering of intrinsics?
2. Do I need to additionally include some special pass or they are lowered unconditionally?
3. Does the lowering mechanism depends on the target machine? Host machine?
If that matters, I tried LLVM 5 and LLVM 8, got the same results.
Any hints or suggestions highly appreciated!