[llvm-dev] LTO and probe-stack functions

Tom Stellard via llvm-dev llvm-dev at lists.llvm.org
Wed Dec 15 09:26:39 PST 2021


Hi,

I've been trying to fix an issue[1] where LTO is optimizing out
probe-stack functions when calls to the function are emitted by
the backend, but aren't present in the IR.

So for example if we have a function @main that has the
"probe-stack"="probestack" attribute, this tells the backend
to emit a call to probestack() when it needs to insert a stack
probe.  This call is only emitted after LTO is complete, so the
LTO optimizer has no idea this function will be used in the final
binary.

What is the correct way to fix this?  Do we need to change the
attributes/visibility of the probestack function, which is currently
defined  as `define dso_local void @probestack() ` or should the
optimizer be checking the value of the "probe-stack' attribute and
consider any function referenced by that attribute to be used?

Thanks,
Tom

[1] https://github.com/llvm/llvm-project/issues/47216



More information about the llvm-dev mailing list