------- Additional Comments From rth at gcc dot gnu dot org  2004-10-12 17:39 -------
Ah, I see some amount of confusion here.

Yes, in the referenced message I do argue for "asm volatile" to be a scheduling
barrier.  You'll note that what I'm most concerned about there is that the asm
remain in the body of the function and not get scheduled into the epilogue.
Which does indeed sound like it might could cause problems.  Too bad I didn't
bother to write a test case demonstrating what I had in mind, but there ya go.

As for transformations that are not *scheduling*, the documentation is also quite
clear: 'GCC will perform some optimizations across a volatile asm instruction;
GCC does not “forget everything” when it encounters a volatile asm instruction'.

Which means that if you try to use volatile asms for fp control word
manipulation, you will be sorely disappointed, because *every* existing pass
of the compiler will thwart you.  If you thought this worked before gcc 4.0,
you were mistaken -- tweak the test case a bit and it'll fail on any arbitrary
gcc release.

I have no particular interest in changing this, because gcc doesn't understand
#pragma FENV_ACCESS, and nothing you do until that support is added is going to
help.  I'll state for the record that FENV_ACCESS will be a *huge* amount of work.

We can clarify the documentation, if you can be specific about what you thought
was confusing, but that's the most I'm willing to accept for this PR.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|wrong-code                  |documentation
            Summary|[4.0 Regression] asm        |asm 'volatile' is not
                   |'volatile' is not honored as|honored as documented
                   |documented                  |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17884

Reply via email to