RFC: #pragma optimization_level

Georg Bauhaus bauhaus@futureapps.de
Fri Apr 1 22:32:00 GMT 2005


Joe Buck wrote:

> Are you using "volatile" correctly?  There are situations where "volatile"
> alone does not suffice and you need more locking, but the Linux and BSD
> kernel folks manage to optimize their device driver code.

We have just been discussing a similar topic in a de.* newsgroup.
A busy-loop function is used to effect a delay, not too precise,
but portably. Like

#define COUNT 1000

void f() {
   /*volatile*/ /*register*/ int i;

   for (i = 0; i < COUNT; ++i)
          ;
}

If volatile is used to instruct the compiler to actually produce
a loop even when optimizing, then we get copying from/to the stack,
or memory access (ARM). What the compiler users have expected their
compiler to do is to produce an obvious loop using registers.

This doesn't always happen, and in addition some strange looking
copy-back-and-forth instructions are generated, like

   move x, y
   move y, x

(ARM, Intel)

The user said that all this was not what he had said (in a loop
like the one above).

Can there be a pragma instructing the compiler to do (πραγμα)
as I say, in source text?




More information about the Gcc mailing list