If the functions are always inlined, the compiler is not forced
to emit their body, so the debugger can't evaluate them.
e.g.
$1 = (StringRef) "patatino"
(lldb) expr $1.size()
error: Couldn't lookup symbols:
attribute((used)) forces the symbols to be emitted even if
they're not referenced. An alternatve proposed was that of
dropping always_inline entirely from LLVM, as it should be
used exclusively where not inlining a function causes correctness
issues. Some concerns have been raised about tblgen being too
slow without the annotations.
I don't think we want this for Release or RelWithDebInfo builds since it will bloat the binaries. How is LLVM_ATTRIBUTE_USED conditionalized in those cases?