Intrinsics Lowering

Hi folks,

I'm converting LLVM Bitcode into assembly file via pass manager, e.g.:

legacy::PassManager passManager;
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!


Sadly, the issue was gone after I cleaned up all the possible local caches/build artefacts, so I could not nail down what was the actual problem.

But my questions still hold, would be nice to understand this aspect better.