This document, the OpenVMS x86-64 VSI C++ Release Notes (01-Mar-2023), describes a field-test VSI C++ x86-64 compiler for OpenVMS x86.
Key Features and Architecture:
Compiler Tools: The package includes two compilers:
CLANG: Supports UNIX-style command-line options.CXX: Supports DCL command-line options, silently ignoring unsupported qualifiers.Demangling Tool: CXX$DEMANGLE (based on llvm-cxxfilt) for UNIX-style C++ name demangling.
OpenVMS Integration:
pointer_size, member_alignment, extern_model) and predefined symbols (VMS, _x86_64).Compilation vs. Linking: Unlike traditional UNIX compilers, this compiler only compiles; linking is a separate step.
Key Differences from OpenVMS Itanium/Alpha C++:
long, size_t, nullptr_t, ptrdiff_t, and default pointers are 64-bits wide on OpenVMS x86 (vs. 32-bits on Itanium). The default pointer size is 64-bit but can be changed via -pointer-size (Clang) or /POINTER_SIZE (CXX).as_is (configurable via -names or /NAMES).Command Line Usage Notes:
.c for C, .cpp for C++); -x c++ can force C++ mode. Options are case-sensitive.SET PROCESS /PARSE=EXTENDED, DEFINE/NOLOG DECC$ARGV_PARSE_STYLE ENABLE, etc.)./DEFINE maps to -D, /OPTIMIZE maps to -O<level>).Known Issues (as of March 2023):
/LIBRARY qualifier.long double data type is not yet fully supported.ANALYZE/OBJECT/DISASSEMBLE can provide similar info).TRY/CATCH statements may not work correctly on V9.2 systems.lib$establish() function is not implemented in Clang.std::cout.operator<< within global object constructors causes %SYSTEM-F-ACCVIO when linked with static cxx_static.olb and cxxabi_static.olb.new/delete operator overrides due to lack of symbol preemption in VMS.CXX compiler cannot compile multiple source files in a single command.The document also provides details on specific pragma options, header handling, and various command-line options and their mappings between CXX DCL qualifiers and Clang options. For further details on Clang, external documentation is referenced.
Site structure and layout ©2025 Majenko Technologies