C Specific Language Conformance Options

Topic describes language conformance options specific to C.

-h [no]c99

Default: -h c99

This option enables or disables language features in the C99 standard. If the previous implementation of the Cray extension differed from the C99 standard, both implementations will be available when the -h c99 option is enabled. The -h c99 option is also required for C99 features not previously supported as extensions.

When -h noc99 is used, C99 language features such as variable-length arrays (VLAs) and restricted pointers that were available as extensions previously to adoption of the C99 standard remain available.

-h [no]tolerant

Default: -h notolerant

The -h tolerant option allows older, non-standard C constructs. This option is useful when porting code written for previous C compilers. Errors involving comparisons or assignments of pointers and integers become warnings. The compiler generates casts so that the types agree. With -h notolerant, the compiler is intolerant of the older constructs.

The -h tolerant option causes the compiler to tolerate accessing an object with one type through a pointer to an entirely different type. For example, a pointer to a long might be used to access an object declared with type double. Such references violate the C standard and should be eliminated if possible. They can reduce the effectiveness of alias analysis and inhibit optimization.