Because Stony Brook compilers operate is multiple phases, theeffect of changing options for a portion of a compilation is not obvious.

For example:

Most optimizations are performed on an entire procedure afterthe procedure has been parsed into an intermediate form. If you tried to turn optimizationoff for just a single statement inside the procedure, then tried to turn optimizationback on again for the remaining statements, your efforts would have no effect. Thisis because the compiler does not look at the values of the optimize qualifiers untilthe entire procedure is parsed. The compiler uses the value of the option settingsat this time for optimization.

To make the effect of embedded option directives predictable,the options have been classified into four categories.  The categories determinewhere the qualifiers can be placed and the scope of their effect.

The categories are: