HP aC++/HP ANSI C A.06.28 Release (769149-001, March 2014)

Performance enhancements for +O1 (Changed)
Various performance improvements have been made for +O1.
One specific improvement is that +Odataprefetch=direct is now supported at +O1, and is
the default at +O1. This may help improve performance for code using loops.
Non-template static data members initialized outside the class no longer treated as
constants in strict mode (Changed)
A static data member with a const integral type that is initialized inside the class can be used later
in the program as a constant. However, if the data member is defined and initialized outside the
class, the standard says it should not be considered a constant. Previous versions of aC++ failed
to diagnose this issue, and treated them as constants.
Starting with this release, such non-template static data members initialized outside the class will
no longer be treated as constants in strict mode.
In non-strict mode, the behavior remains unchanged for compatibility reasons.
Template static data members initialized outside the class are now always considered non-constant.
Enhancements to allow code to run well on current platforms and future multi-core
processors (New)
Enhancements have been made to this release of the compiler to allow code to run well on current
platforms and future multi-core processors.
New diagnostic messages (New)
The following new diagnostic messages are added to the compiler:
Warning #3750
Warning #3750 is now emitted for lines that end with a backslash followed by a space. For
example:
int main(){
int something; \
int anotherthing;
}
line 2: warning #3750-D: "\" followed by white space is not a line splice
Warning #2767
In 64-bit C compilations, casting a pointer to an integral type of lower size now generates
warning #2767. Previously, this was only a remark.
Remark #3719
In cases where the constructor initialization list is invoked in an order different from what the
programmer apparently expects, a new remark #3719 is now emitted. For example:
class A{
public:
A(int c);
int i, j;
};
A::A(int c): i(++c), j(++c) { }
//remark #3719 - Init order is different than
//what is apparent from the code above
Improved diagnostic messages (Changed)
Several improvements have been made in the compiler diagnostic messages in terms of wording,
better positioning of error constructs, and removal of redundant diagnostics. Some examples:
New features in version A.06.25 31