Proposed alternative to D105338.
This is ugly, but short-term I think it's the best way forward: first, let's formalize the hacks into a coherent model. Then we can consider extensions of that model (we could have different flavors of volatile with different rules).
This should be sunk into Instruction::willReturn(), otherwise FuncAttrs won't use the new semantics.