Thanks for the welcome!
All your points are good. For what it’s worth, I thought there might be a global scope/capture variable issue, but in my own code all of this is buried in a function and @code_warntype seemed happy. What I didn’t realize, though, that B*x allocates; thanks for pointing that out.