From 3019e7a31cd02eee24e0b57067dfae7a93cb32ff Mon Sep 17 00:00:00 2001 From: Raymond Lu Date: Tue, 5 Jul 2005 15:06:35 -0500 Subject: [svn-r11021] Purpose: Add detection. Description: pgcc version 6.0x have optimization (-O, -O2, or -O3) problem. It caused multi driver test to fail. The problem happened in a macro definition. Solution: Detect these versions and add option "-Mx,28,0x8" to the compiler to avoid the problem if optimization is enable. Platforms tested: mir -simple change. --- configure | 5 +++++ configure.in | 18 ++++++++++++++++++ src/H5FDmulti.c | 21 --------------------- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/configure b/configure index 1fe503d..e44ecc1 100755 --- a/configure +++ b/configure @@ -7881,6 +7881,7 @@ EOF ;; esac + case "$INSTALL" in *install-sh*) INSTALL='\${top_srcdir}/bin/install-sh -c' @@ -36566,6 +36567,10 @@ if test -n "$cc_vendor" && test -n "$cc_version"; then CC_VERSION="$CC_VERSION ($cc_vendor-$cc_version)" fi +if (${CC-cc} -V 2>&1 | grep '^pgcc 6.0') > /dev/null && test "X$enable_production" = "Xyes"; then + CC="${CC-cc} -Mx,28,0x8" +fi + if test -x /bin/pwd; then pwd=/bin/pwd else diff --git a/configure.in b/configure.in index 8e06faf..ae06d81 100644 --- a/configure.in +++ b/configure.in @@ -336,6 +336,15 @@ EOF ;; esac +dnl ---------------------------------------------------------------------- +dnl pgcc version 6.0x have optimization (-O, -O2 or -O3) problem. Detect +dnl these versions and add option "-Mx,28,0x8" to the compiler to avoid +dnl the problem if optimization is enable. +dnl +dnl if test "X$enable_production" = "Xyes"; then +dnl CC="${CC-cc} -Mx,28,0x8" +dnl fi + dnl Fix up the INSTALL macro if it's a relative path. We want the dnl full-path to the binary instead. case "$INSTALL" in @@ -2225,6 +2234,15 @@ if test -n "$cc_vendor" && test -n "$cc_version"; then fi dnl ---------------------------------------------------------------------- +dnl pgcc version 6.0x have optimization (-O, -O2 or -O3) problem. Detect +dnl these versions and add option "-Mx,28,0x8" to the compiler to avoid +dnl the problem if optimization is enable. +dnl +if (${CC-cc} -V 2>&1 | grep '^pgcc 6.0') > /dev/null && test "X$enable_production" = "Xyes"; then + CC="${CC-cc} -Mx,28,0x8" +fi + +dnl ---------------------------------------------------------------------- dnl Where is the root of the source tree. Give an absolute address so dnl we can find it no matter which directory of the distribution is our dnl current directory. The built-in pwd fails on some systems, but the diff --git a/src/H5FDmulti.c b/src/H5FDmulti.c index 14905a5..0289096 100644 --- a/src/H5FDmulti.c +++ b/src/H5FDmulti.c @@ -53,10 +53,6 @@ #endif /* Loop through all mapped files */ -#ifdef TMP -/*The -O2 optimization of the PGCC in mir has a bug for this macro. A workaround - *is provided here to avoid the problem temporarily until the compiler bug is fixed. - *SLU - 2005/6/13 */ #define UNIQUE_MEMBERS(MAP,LOOPVAR) { \ H5FD_mem_t _unmapped, LOOPVAR; \ hbool_t _seen[H5FD_MEM_NTYPES]; \ @@ -67,23 +63,6 @@ if (H5FD_MEM_DEFAULT==LOOPVAR) LOOPVAR=_unmapped; \ assert(LOOPVAR>0 && LOOPVAR0 && LOOPVAR