On 2020-03-09 23:10, Segher Boessenkool wrote: > Hi! > > On Sun, Mar 08, 2020 at 05:18:21PM +0100, J.W. Jagersma wrote: >> There is also still the question of whether non-volatile asms should be >> allowed to throw or not. I don't know if that should be discussed here >> or on the PR. > > I think you should just allow it. But almost always an asm that can > throw *should* be volatile, or else the compiler might optimise it away > in unexpected cases, etc.
I do think that allowing it for all asms is the best option. My initial idea was that the compiler could be made to expect exceptions only from asms that take memory operands, but after giving that some more thought, I don't think it's feasible. So either allow all asms to throw, or restrict this to volatile only. Personally I'm in favor of the former. If an asm could throw, but does otherwise not have any side effects or useful outputs, then it should be moved or optimized away. However I don't know if there is any performance cost associated with this. It is generally said that exceptions don't have any runtime overhead if you don't throw them, I don't know if that is the full story. If certain optimizations are disabled for throwing statements, then I expect there would be some resistance to this proposal.