HP aC++/HP ANSI C Release Notes (B3901-90037; A.06.26; September 2011)
for loops that have not been parallelized manually with OpenMP directives. For these
loops, the compiler automatically parallelizes each loop that is both safe and likely to
have improved performance when executed in parallel.
Programs compiled with the +Oautopar option require the libcps, libomp, and
libpthreads runtime support libraries to be present at both compilation and runtime.
When linking with the 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, ...
New features in version A.06.15 35