>> Asms without outputs are automatically volatile. So there ought be
zero change
>> with and without the explicit use of the __volatile__ keyword.
>
> That’s what the documentation says but it wasn’t actually true
> as of a couple of releases ago, as I recall.
Looks like 2005:
$ git annotate gcc/c/c-typeck.c
...
89552023 ( bonzini 2005-10-05 12:17:16 +0000 9073)
/* asm statements without outputs, including simple ones, are treated
89552023 ( bonzini 2005-10-05 12:17:16 +0000 9074)
as volatile. */
89552023 ( bonzini 2005-10-05 12:17:16 +0000 9075)
ASM_INPUT_P (args) = simple;
89552023 ( bonzini 2005-10-05 12:17:16 +0000 9076)
ASM_VOLATILE_P (args) = (noutputs == 0);
-Y