On Mar 5, 2014, at 10:07 AM, Richard Henderson <r...@redhat.com> wrote:

> On 03/04/2014 10:12 PM, Yury Gribov wrote:
>>>> 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);
> 
> Yep, that's the one.  So, more than "a couple" of releases: gcc 4.2 and later.

Thanks gentlemen.  That explains it — we ran into this in GCC 3.3.3 and then 
upgraded from there straight to V4.6 or so.

        paul

Reply via email to