Support for OPT(3) introduces additional options and pragmas to help you improve your application performance, including the loop unrolling option and pragmas and a number of new built-in functions. Using the OPT(0), OPT(2) and OPT(3) options, you can obtain optimization levels that run from comprehensive low-level optimizations to more extensive optimizations.
C++ standard library
IBM XL C/C++ for z/VM® includes the C++ Standard I/O Stream Library for performing input and output (I/O) operations, the C++ Standard Complex Mathematics Library for manipulating complex numbers, and the STL, which is composed of C++ template-based algorithms, container classes, iterators, localization object, and the string class.
Unicode literal support
IBM XL C/C++ for z/VM adds support for the char16_t and char32_t types through the use of typedefs in C and as native types in C++ and makes it easier to port code exploiting these types to z/OS®.
Compatibility with the GNU Compiler Collection (GCC)
The included C support for the statement expression construct enables programmers to use loops, switches, and local variables within an expression, and C and C++ support for the zero-extent array construct as a header for a variable-length object. These features make it easier to port C/C++ code using these constructs on other platforms to XL C/C++ for z/VM®.
Deeper pointer analysis
The RESTRICT option indicates to the compiler that parameter pointers in all functions or in specified functions are disjoint. When the RESTRICT option is in effect, deeper pointer analysis is done by the compiler. This is intended to improve the performance of the application being compiled.
Saved option string feature
IBM XL C/C++ for z/VM provides a compact representation of compiler options used for each source file and creates the saved options string in the executable for each compilation unit. The compiler will also record version information for all compiler components that were active during the compilation. This new feature can help you in diagnosing run-time problems.
Message severity modification support
The SEVERITY option allows changing the severity of some of the diagnostic messages emitted by the compiler. This feature allows customization of certain diagnostic message levels to the coding standards of the user.
Source listings generated by the compiler are enhanced to add the starting offset of each function to the listings. The starting offset of each function is expected to be helpful for debugging purposes. For compiled code using optimization level O2 or O3, the names and addresses of functions and the names, types, and values of the parameters can be displayed when you debug optimized code.