HP aC++/HP ANSI C A.06.27 Release Notes

HP-UX B.11.61 linker (patch PHSS_36342 or PHSS_36349), compiling with the +Oautoparoption
causes them to be automatically included. Older linkers require those libraries to be specified
explicitly or by compiling with +Oopenmp.
At present, +Oautoparis only supported when compiling C or Fortran files, and not C++ files. If
you use +Oautopar with C or Fortran code in a mixed-language application that also includes
C++ files, you must use -mt when compiling and linking the C++ files, similar to the current
requirements for +Oopenmp. Please refer the documentation of the aCC compiler's-mt option for
additional information and restrictions.
+O[no]loop_block option (New)
+O[no]loop_block
Loop blocking is a combination of strip mining and interchange that improves data cache locality.
It is provided primarily to deal with nested loops that manipulate arrays that are too large to fit
into the data cache. Under certain circumstances, loop blocking allows reuse of these arrays by
transforming the loops that manipulate them so that they manipulate strips of the arrays that fit into
the cache.
At optimization levels 3 and 4, using +Oloop_block (the default) allows automatic loop blocking.
Specifying +Onoloop_block disables loop blocking.
+O[no]loop_unroll_jam (Default Change)
At optimization levels 3 and 4, the default for this option has changed from
+Onoloop_unroll_jam to +Oloop_unroll_jam, which allows automatic loop unroll-and-jam.
+Olit=all (Default change for HP C)
The default in C mode of the compiler is now +Olit=all, placing string constants in read-only
memory by default. This change over previous versions of the compiler (which defaulted to
+Olit=const) improves performance and is in keeping with similar changes in the industry. Note
that this may cause a runtime signal 11 if an attempt is made to modify string literals.
To force the string to be read/write, you can change the source as follows:
static CHAR forall_00[] = "FORALL.CHARTYPE ";
static CHAR forall_01[] = "FORALL.COMPLEXTYPE ";
...
static CHAR *foralltemptypename[LASTINTRINTYPE-FIRSTINTRINTYPE+1] = {
forall_00, forall_01, ...
Using an array will force the string to be read/write.
Other simpler cases can be handled as:
changing to array will work in most cases:
char *temp = "abcd";
char temp[] = "abcd";
If temp is used as a pointer:
static char temp_arr[] = "abcd";
char *temp = temp_arr;
+macro_debug= (New)
The +macro_debug option controls the emission of macro debug information into the object file:
+macro_debug={ref|all|none}
Set +macro_debug to one of the following required values:
ref Emits debug information only for referenced macros. This is the default for -g, -g1,or
-g0.
New features in version A.06.15 33