HP aC++/HP C A.06.25 Release Notes
Table Of Contents
- HP aC++/HP ANSI C Release Notes
- Table of Contents
- 1 HP aC++/HP ANSI C Release Notes
- 2 What’s New in This Version
- New Features in Version A.06.25
- C99 default C compilation mode (Changed)
- Full -AA default C++ compilation mode (Changed)
- -Ax option enables support for several C++0x extensions (New)
- C99 features added to C++0x (New)
- extern template
- Decimal Floating Point supported in C++ mode (New)
- #pragma STDC FLOAT_CONST_DECIMAL64 (New)
- #pragma omp task (New)
- #pragma omp taskwait (New)
- Performance enhancements for +O1 (Changed)
- Non-template static data members initialized outside the class no longer treated as constants in strict mode (Changed)
- Enhancements to allow code to run well on current platforms and future multi-core processors (New)
- New diagnostic messages (New)
- Improved diagnostic messages (Changed)
- Enhanced +wendian warnings (New/Changed)
- New runtime abort messages (New)
- New Features in Version A.06.20
- Decimal floating-point arithmetic (HP-UX 11.31 only) (New)
- +annotate=structs (New)
- +check=lock (New)
- +check=thread (New)
- +O[no]autopar now supported in C++ Mode (New)
- +O[no]dynopt (HP-UX 11.31 only) (New)
- +inline_level num (Enhanced)
- -dumpversion (New)
- #include_next (New)
- #pragma diag_push (New)
- #pragma diag_pop (New)
- +Oinlinebudget is deprecated (Change)
- In next release, default C compilation mode will change from C89 to C99
- In next release, default C++ compilation mode will change to full -AA
- New Features in Version A.06.15
- printf, fprintf Optimization (New)
- +Wmacro Option (New)
- +Wcontext_limit Option (New)
- +wperfadvice Option (New)
- +Wv Option (New)
- +wlock Option (New)
- +O[no]autopar Option (New)
- +O[no]loop_block Option (New)
- +O[no]loop_unroll_jam (Default Change)
- +Olit=all (Default Change for HP C)
- +macro_debug= (New)
- +pathtrace (New)
- +check Suboptions (New)
- -Bhidden_def (New)
- -dM (New)
- #pragma OPT_LEVEL INITIAL (New)
- #pragma OPTIMIZE (Deprecated)
- #pragma [NO]INLINE (New for C++ Mode)
- _Asm_ld, _Asm_ldf, _Asm_st, _Asm_stf Intrinsics (New)
- Debugging Code Compiled with Opt Levels above +O1 Is Supported
- __attribute__ ((visibility("default"|"protected"|"hidden"))) Added (New)
- __attribute__ ((warn_unused_result)) Added (New)
- Change in treatment of cv-qualified assignment operators
- New Features in Version A.06.12
- New Features in Version A.06.10
- HP Code Advisor
- +cond_rodata Option (Obsoleted)
- +[no]dep_name Option (New)
- +expand_types_in_diag Option (New)
- +FPmode Option (Enhanced)
- +Ointeger_overflow (Default Changed)
- +Onolibcalls= Option (New)
- +wendian Option (New)
- +wlint Option (Enhanced)
- +wsecurity= Option (Enhanced)
- System-wide Option Configuration
- [NO]PTRS_TO_GLOBALS Pragma
- -AA -D_HP_NONSTD_FAST_IOSTREAM Performance Improvement Macro
- New Function Attributes
- Improved Diagnostics
- C++ Standard Library Change
- Earlier Versions
- New Features in Version A.06.25
- 3 Installation Information
- 4 Compatibility Information
- 5 Known Problems and Workarounds
- Obsolete LANG-STARTUP Files
- codecvt_byname Facet Needed for C Locale Conversions
- Using +check= Options and Running on Test and Deployment Systems
- GPREL22 Relocation Error
- Object Files Generated at +O4 or -ipo
- Incompatibilities Between the Standard C++ Library Ver. 1.2.1 and the Draft Standard
- Conflict Between macros.h and numeric_limits Class (min and max)
- Known Limitations
- 6 Related Documentation
The +check=globals option is implied by +check=all.
• +check=truncate[:explicit|:implicit]
The +check=truncate option enables runtime checks to detect data loss in
assignment when integral values are truncated. Data loss occurs if the truncated
bits are not all the same as the left most non-truncated bit for signed type, or not
all zero for unsigned type. Programs may contain intentional truncation at runtime,
such as when obtaining a hash value from a pointer or integer. To avoid runtime
failures on these truncations, the user can explicitly mask off the value: ch =
(int_val & 0xff);
explicit Turns on runtime checks for truncation on explicit user casts of
integral values, such as (char)int_val.
implicit Turns on runtime checks for truncation on compiler-generated
implicit type conversions, such as ch = int_val;.
+check=truncate (with no suboptions) turns on runtime checks for both explicit
cast and implicit conversion truncation
Note that the +check=all option does not imply +check=truncate. To enable
+check=truncate, you must explicitly specify it.
• +check=bounds[:array|pointer|all|none]
The +check=bounds option has been enhanced to provide the option of checking
for out-of-bound references to buffers through pointer access as well as to array
variables. You can specify one of the following +check=bounds suboptions:
array Enables check for out-of-bounds references to array variables.
pointer Enables check for out-of-bounds references to buffers through pointer
access. The buffer could be a heap object, global variable, or local
variable. This suboption also checks out-of-bounds access through
common libc function calls such as strcpy, strcat, memset, and
so on. This check can create significant run-time performance
overhead.
all Enables out-of-bounds checks for both arrays and pointers. This is
equal to +check=bounds:array +check=bounds:pointer.
none Disables out-of-bounds checks..
+check=bounds (with no suboption) is equal to +check=bounds:array. This
may change in the future to also include +check=bounds:pointer.
When +check=all is specified, it enables +check=bounds:array only. To
enable the pointer out-of-bounds check, +check=bounds:pointer must be
specified explicitly.
34 What’s New in This Version