IBM XL C/C++ for z/VM, V1.3 compiler delivers various performance and usability enhancements, which are briefly described below. You can get details on these feature and all other aspects of the compiler in the relevant compiler documentation.
XL C/C++ for z/VM is a highly productive and powerful development environment for building C and C++ applications. This compiler is important because more customer business applications, customer server applications, ISV applications, and IBM middleware programs are now being written in both C and C++.
XL C/C++ for z/VM, V1.3 continues to provide additional functionality and enhancements.
- Additional optimization and tuning improvements are made for the compiler including inlining of additional destructors to avoid overhead of function calls. These changes can improve the performance of generated code without the need for changes to the source code.
- Implicit RESTRICT support - 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.
- Performance improvements to the Standard C++ Library particularly with global placement new operators and the implementation of vector template class.
- The Standard C++ Library includes enhancements based on the ISO document ISO/IEC TR 19768-Technical Report on C++ Library Extension, for improved portability of source code from other platforms.
- XL C/C++ for z/VM, V1.3 supports parts of the ISO/IEC TR 19768:2007, Technical Report on C++ Library Extensions. The XL C/C+ compiler also supports parts of the ISO/IEC JTC1/SC22/WG21 draft of a new C++ language standard, commonly referred to as C++0x. Features supported include Extended Friend Declarations, Extern Template, and Name Lookup in Template Base Class. Support of standards by the XL C/C++ compiler is intended to make it easier to port C++ code from other platforms to z/VM
Productivity and porting support
- In XL C/C++ for z/VM, V1.3 functionality to address customer requirements includes Unicode Literal support. This 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.
- In XL C/C++ for z/VM, V1.3 the XL C/C++ compiler adds additional support for source code compatibility with the GNU Compiler Collection (GCC), including C support for the statement expression construct to allow 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.
New compiler options, compiler suboptions, and macros
- New compiler options include:
- SHOWMACROS, to display macro definitions for debugging complex macro expansions in application programs
- SKIPSRC, for excluding source statements from the listing to improve readability of the compiler listings
- XL C/C++ for z/VM, V1.3 introduces the following new compiler suboptions:
- KEYWORD(typeof)for C source code
- LANGLVL(AUTOTYPEDEDUCTION | C99LONGLONG | C99PREPROCESSOR | DECLTYPE | DELEGATINGCTORS | EXTENDEDINTEGERSAFE | INLINENAMESPACE | STATIC_ASSERT | VARARGMACROS | VARIADICTEMPLATES)
- XL C/C++ for z/VM, V1.3 introduces the following new macros:
- __IBMCPP_AUTO_TYPEDEDUCTION (C++ only)
- __IBMCPP_C99_LONG_LONG (C++ only)
- __IBMCPP_C99_PREPROCESSOR (C++ only)
- __IBMCPP_DECLTYPE (C++ only)
- __IBMCPP_DELEGATING_CTORS (C++ only)
- __IBMCPP_INLINE_NAMESPACE (C++ only)
- __IBMCPP_STATIC_ASSERT (C++ only)
- __IBMCPP_VARIADIC_TEMPLATES (C++ only)
- New pragma directives - XL C/C++ for z/VM, V1.3 introduces the new suboption zosv1r12_ansi to the option NAMEMANGLING and to the language construct #pragma namemangling. The linkage errors caused by any future changes in the mangling scheme can be resolved by recompiling the new modules using the same mangling scheme that was used in the already-compiled modules, zOSV1R12_ANSI.
- The new Saved Option String feature 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 - XL C/C++ for z/VM, V1.3 adds support for the SEVERITY option, to allow 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 XL C/C++ 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.
- Functions and parameters displayed for optimized code - 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.
|Software Development||z/OS XL C/C++||Documentation||z/OS|