I have a pass that puts a global constant data array into the module. And another pass that gets runned by lld during LTO stage.
When I look at bytecode files corresponding to source TUs produced by
clang -flto, I can see GVs inserted by my pass #1. However, when pass #2 gets to run, these GV’s are gone.
I figured out that passing -mllvm -compute-dead=0 to the linker fixes the problem, but I’m not sure if it is right thing to do. Ideally, I’d like to trick LTO to ignore only mine GVs during compute-dead analysis.
I even tried creating another function that “uses” created GV, but it also got deleted.
Thanks in advance.