HP aC++/HP ANSI C A.06.28 Release (769149-001, March 2014)
touch foo.c ; cc -E -dM foo.c
#pragma OPT_LEVEL INITIAL (New)
#pragma OPT_LEVEL INITIAL
#pragma OPT_LEVEL has been enhanced to accept an additional keyword, INITIAL.
When used with a numeric argument, the OPT_LEVEL pragma sets the optimization level to 0, 1,
2, 3, or 4.
The INITIAL argument causes the optimization level in effect at the start of the compilation,
whether by default or specified on the command line, to be restored.
#pragma OPTIMIZE (Deprecated)
As of this release of the compiler, #pragma OPTIMIZE is deprecated. Use #pragma OPT_LEVEL
instead.
#pragma [NO]INLINE (New for C++ Mode)
Previously, #pragma [NO]INLINEwas supported only on HP C and aC++ C-mode. With this
release, #pragma [NO]INLINEis now supported in C++ mode as well.
_Asm_ld, _Asm_ldf, _Asm_st, _Asm_stf Intrinsics (New)
The following new assembly intrinsics have been added to the compiler:
_Asm_ld _Asm_st
_Asm_ldf _Asm_stf
For more information, see the "Inline assembly for Itanium(R)-based HP-UX" link off http://
www.hp.com/go/aCC.
Debugging Code Compiled with Opt Levels above +O1 Is Supported
Debugging code compiled with optimization levels above +O1is now supported, as described in
section 14.22 ("Debugging optimized code") of the Debugging with GDB manual under the
"Documentation" link at: http://www.hp.com/go/wdb.
__attribute__ ((visibility("default"|"protected"|"hidden"))) Added (New)
The visibility attributes "default", "protected", and "hidden", are equivalent to the options
-Bdefault, -Bprotected, and -Bhidden, and the pragmas DEFAULT_BINDING, EXTERN,
and HIDDEN, respectively.
__attribute__ ((warn_unused_result)) Added (New)
The warn_unused_result attribute tells the compiler to emit a warning if a caller of a function
with this attribute does not use its return value. This is useful for functions where not checking the
result can be a security problem or always a program bug, as with realloc().
Change in treatment of cv-qualified assignment operators
A user-defined assignment operator that is a const or volatile member function, is not considered
a copy assignment operator, and the compiler will not suppress the declaration of an implicit copy
assignment operator. As a result, the implicitly generated version might be chosen during overload
resolution, if it is a better match. For example:
struct S {
S();
const S& operator=(const S&) const;
};
New features in version A.06.15 45