On Thu, Mar 12, 2020 at 02:08:18PM +0100, Richard Biener wrote: > > It wasn't clear from my message above, but: I was mostly worried about > > requiring the asm to treat memory operands in a certain way when the > > exception is thrown. IMO it would be better to say that the values of > > memory operands are undefined on the exception edge. > > Rather unspecified. So IMHO on the exception edge the asm() should > still appear as a def for all outputs so the compiler cannot derive any > actual values for them. That of course also means that they must not > appear to be must-defs since we may not DSE earlier stores for example.
So make all outputs of an asm that may throw (w/ -fnon-call-exceptions) inout operands instead? That works for registers exactly the same, too? > If we manage to get the unspecified values correct in SSA then we don't > need to say whether the asm may clobber them before or after throwing. Yeah. Which users will *never* get right, that is, it would be hard to use any such interface correctly. Segher