Compiler options

Table 1 lists the new and updated XL C/C++ compiler options. See z/OS XL C/C++ User's Guide for more detailed information.

Table 1. Summary of new and changed XL C/C++ compiler options
Compiler option Release Description Reason for change
ARCH(10) z/OS® V1R13 New value: Produces code that uses instructions available on the 2827-xxx models for IBM® zEnterprise® EC12 (zEC12) in z/Architecture® mode. Release update
DEBUG(LEVEL(level)) z/OS V2R1 New value: Controls the amount of debug information produced. Release update
DSAUSER | NODSAUSER (C only) z/OS V1R13 New option: When DSAUSER is specified with the METAL option, a field of the size of a pointer is reserved on the stack. Release update
INCLUDE | NOINCLUDE z/OS V2R1 New option: Specifies additional header files to be included in a compilation unit. Release update
LANGLVL(AUTOTYPEDEDUCTION) z/OS V1R12 New value: When LANG(AUTOTYPEDEDUCTION) is in effect, you do not need to specify a type when declaring a variable. Instead, the compiler deduces the type of an auto variable from the type of its initializer expression. Release update
LANGLVL(C1XNORETURN) z/OS V2R1 New value: Controls whether the _Noreturn function specifier is supported. Release update
LANGLVL(C99COMPLEX) z/OS V1R13 New value: Controls whether C99 complex data types and related keywords are enabled. Release update
LANGLVL(C99COMPLEXHEADER) z/OS V1R13 New value: Controls whether the C99 complex.h header file is used. Release update
LANGLVL(C99LONGLONG) z/OS V1R12 New value: When LANG(C99LONGLONG) is in effect, the C++ compiler provides the C99 long long with IBM extensions feature. Release update
LANGLVL(C99PREPROCESSOR) z/OS V1R12 New value: When LANG(C99PREPROCESSOR) is in effect, C99 and C++0x compilers provide a common preprocessor interface, which can ease the porting of C source files to the C++ compiler and avoid preprocessor compatibility issues. Release update
LANGLVL(COMPATRVALUEBINDING) z/OS V1R13 New value: When you are porting code to IBM XL C/C++ compiler, you can specify this option to instruct the compiler to allow a non-const reference to bind to an rvalue of a user-defined type where an initializer is not required. Release update
LANGLVL(CONSTEXPR) z/OS V2R1 New value: Controls whether the generalized constant expressions feature is enabled. Release update
LANGLVL(DECLTYPE) z/OS V1R12 New value: When LANG(DECLTYPE) is in effect, decltype can be used on an expression to get the resultant type of that expression, which might be type dependent. Release update
LANGLVL(DEFAULTANDDELETE) z/OS V2R1 New value: Controls whether the defaulted and deleted functions feature is enabled. Release update
LANGLVL(DELEGATINGCTORS) z/OS V1R12 New value: When LANG(DELEGATINGCTORS) is specified, you can concentrate common initializations and post initializations in one constructor, which improves the readability and maintainability of the program. Release update

LANGLVL(EXPLICITCONVERSION
OPERATORS)

z/OS V2R1 New value: Controls whether the explicit conversion operators feature is enabled. Release update
LANGLVL(EXTC1X) z/OS V2R1 New value: Indicates that compilation is based on the C11 standard, invoking all the currently supported C11 features and other implementation-specific language extensions. Release update
LANGLVL(EXTENDEDINTEGERSAFE) z/OS V1R12 New value: With this option, if a decimal integer literal that does not have a suffix containing u or U cannot be represented by the long long int type, you can decide whether to use the unsigned long long int to represent the literal. Release update
LANGLVL(GNU_COMPLEX) z/OS V1R13 New value: Controls whether GNU complex data types and related keywords are enabled. Release update
LANGLVL(GNU_SUFFIXIJ) z/OS V1R13 New value: Controls whether support for GNU-style complex numbers is enabled. Release update
LANGLVL(INLINENAMESPACE) z/OS V1R12 New value: When you specify the LANGLVL(INLINENAMESPACE) option, members of the inline namespace can be defined and specialized as if they were also members of the enclosing namespace. Release update
LANGLVL(REFERENCECOLLAPSING) z/OS V2R1 New value: Controls whether the reference collapsing feature is enabled. Release update
LANGLVL(RIGHTANGLEBRACKET) z/OS V2R1 New value: Controls whether the right angle bracket feature is enabled. Release update
LANGLVL(RVALUEREFERENCES) z/OS V2R1 New value: Controls whether the rvalue references feature is enabled. Release update
LANGLVL(SCOPEDENUM) z/OS V2R1 New value: Controls whether the scoped enumeration feature is enabled. Release update
LANGLVL(STATIC_ASSERT) z/OS V1R12 New value: When LANGLVL(STATIC_ASSERT) is set, a severe error message for compile time assertions is issued on failure. Release update
LANGLVL(TEMPSASLOCALS) z/OS V1R13 New value: Extends the lifetime of temporaries to reduce migration difficulty. Release update
LANGLVL(TEXTAFTERENDIF) z/OS V1R13 New value: Suppresses the warning message that is emitted when you are porting code from a compiler that allows extra text after #endif or #else to IBM XL C/C++ compiler. Release update
LANGLVL(VARIADICTEMPLATES) z/OS V1R12 New value: When LANGLVL(VARIADICTEMPLATES) is set, you can define class and function templates that have any number (including zero) of parameters. Release update
NAMEMANGLING(zOSV1R12_ANSI) z/OS V1R12 New value: NAMEMANGLING(zOSV1R12_ANSI) is compatible with z/OS XL C++ V1R12 link modules that were created with NAMEMANGLING(ANSI) or #pragma namemangling(ansi). Release update
NAMEMANGLING(zOSV2R1_ANSI) z/OS V2R1 New value: NAMEMANGLING(zOSV2R1_ANSI) is compatible with z/OS XL C++ V2R1 link modules that were created with NAMEMANGLING(ANSI) or #pragma namemangling(ansi). Release update
SMP | NOSMP z/OS V2R1 New option: Enables parallelization of program code. Release update
STRICT(SUBSCRIPTWRAP) z/OS V2R1 New value: Prevents the compiler from assuming that array subscript expressions will never overflow. Release update
SYSSTATE (Metal C only) z/OS V2R1 New option: Provides additional SYSSTATE macro parameters to the SYSSTATE macro that is generated by the compiler. Release update
TARGET(zOSV1R12) z/OS V1R12 New value: TARGET(zOSV1R12) generates object code to run under z/OS Version 1 Release 12 and subsequent releases. Release update
TARGET(zOSV1R13) z/OS V1R13 New value: TARGET(zOSV1R13) generates object code to run under z/OS Version 1 Release 13 and subsequent releases. Release update
TARGET(zOSV2R1) z/OS V2R1 New value: TARGET(zOSV2R1) generates object code to run under z/OS Version 2 Release 1 and subsequent releases. Release update
TEMPLATEDEPTH (C++ only) z/OS V1R13 New option: The TEMPLATEDEPTH option specifies the maximum number of recursively instantiated template specializations that are processed by the compiler. Release update
THREADED | NOTHREADED z/OS V2R1 New option: Indicates to the compiler whether it must generate threadsafe code. Release update
TUNE(10) z/OS V1R13 New value: TUNE(10) generates code that is executable on all models, but is optimized for the 2827-xxx using IBM zEnterprise EC12 (zEC12). Release update