cc

Order Number: XX-DEF3F-A5

This document provides the release notes for the VSI C X7.4-726 compiler for OpenVMS x86-64 systems, released on 8 February 2023. This is a native x86-64 compiler that generates native x86-64 object modules and behaves similarly to VSI C V7.4 for OpenVMS Integrity.

Key Information:

  1. Version Identification: The compiler identifies itself as VSI C X7.4-725 (GEM 50X23) on OpenVMS x86 64 V9.2.
  2. Prerequisites: Requires OpenVMS V9.2 "update 2" minimum, a DEBUG ECO for debugger operation, and specific packages from the VSI Service Platform: x86-vms92xpcsi-v0100, vsi-x86vms-vms92xupdate-v0200, and vms92xdebug-v0100.
  3. Installation: Uses the standard PRODUCT INSTALL command. Release notes are available at SYS$HELP:CC.RELEASE_NOTES post-installation. An optional SYS$STARTUP:DECC$STARTUP.COM is provided for optimal compilation performance.
  4. Differences from Itanium C Compiler:
    • #pragma linkage_ia64 is not supported; #pragma linkage_alpha is treated as #pragma linkage.
    • No support for asm/fasm/dasm intrinsics; specific machine instructions require builtins.h or assembly calls.
    • Most Alpha PAL builtins are implemented as transparent system services, not compiler builtins. Exceptions like PAL_GENTRAP and PAL_BUGCHK use break2().
    • The int64 _RETURN_ADDRESS(void) builtin replaces the R26 special case for obtaining the return address.
    • No support for Alpha floating-point builtins.
    • Default Floating Point: The default is /FLOAT=IEEE_FLOAT (IEEE format). VAX floating-point formats (/FLOAT=D_FLOAT, /FLOAT=G_FLOAT) are supported via runtime conversion to/from IEEE, incurring overhead and potential accuracy loss. The default /IEEE_MODE is DENORM_RESULTS, which may produce Infinity/NaN instead of runtime errors and allows denormal values.
    • Predefined Macros: Includes _x86_64 and __x86_64.
  5. Enhancements (V7.5): Introduces /SHOW=[NO]FULLPATH to display full paths of included headers.
  6. Known Restrictions (Field Test Compiler):
    • Partial support for /OPTIMIZE qualifier.
    • Incomplete debug support for all data types.
    • /MACHINE_CODE qualifier is ignored.
    • Complex datatype math functions return incorrect values.
    • #dictionary pragma is not supported.
    • long double data type is not fully supported, with issues in compile-time initialization and math intrinsic functions.
    • varargs.h is awkward to support; converting to <stdarg.h> is recommended.
    • Variable initializers with math exceptions are not properly signaled.
    • /IEEE_MODE and /ROUNDING_MODE qualifiers are ignored.
    • /CHECK=UNINITIALIZED_VARIABLES is not supported and may cause a runtime error.
    • Divide-by-zero during constant folding results in an error about unsupported compile-time expression evaluation, not a warning (unlike Itanium).
    • Specific issues with /FIRST_INCLUDE if the primary source file's first logical line spans physical lines.
    • Unused static functions generate linker warnings.
    • The $CODE$ psect uses the NOSHR attribute (unlike IA64's SHR), potentially causing linking problems with mixed modules.
    • The compiler does not issue warnings for case-sensitive variable names, uninitialized variables, or invalid references to restricted pointers (unlike the Itanium compiler).
    • Some compiler errors are printed only to SYS$OUTPUT, not SYS$ERROR.
    • Cannot create listings for more than 20 files at once.
  7. Reporting Problems: Users are directed to report issues via the VSI Support Portal.
XX-DEF3F-A5
May 2000
12 pages
Quality

Original
0.1MB

Site structure and layout ©2025 Majenko Technologies