summaryrefslogtreecommitdiffstats
path: root/config/gnu-flags
diff options
context:
space:
mode:
Diffstat (limited to 'config/gnu-flags')
-rw-r--r--config/gnu-flags48
1 files changed, 30 insertions, 18 deletions
diff --git a/config/gnu-flags b/config/gnu-flags
index 71de5e3..93f044a 100644
--- a/config/gnu-flags
+++ b/config/gnu-flags
@@ -22,12 +22,17 @@ if test X = "X$cc_flags_set"; then
if test "-" != "$cc_vendor-$cc_version"; then
echo "compiler '$CC' is GNU $cc_vendor-$cc_version"
fi
+
+ # Some version numbers
+ cc_vers_major=`echo $cc_version | cut -f1 -d.`
+ cc_vers_minor=`echo $cc_version | cut -f2 -d.`
+ cc_vers_patch=`echo $cc_version | cut -f3 -d.`
+ cc_vers_all=`expr $cc_vers_major '*' 1000000 + $cc_vers_minor '*' 1000 + $cc_vers_patch`
fi
-# Warn about old GNU compilers that don't work right.
-case "$cc_vendor-$cc_version" in
- gcc-2.7.*)
- cat <<EOF
+# GCC compilers before gcc-2.8.1 have problems with `long long'.
+if test gcc = $cc_vendor -a $cc_vers_all -lt 2008001; then
+ cat <<EOF
**
** This compiler may be unable to properly compile the long long
** data type used extensively by hdf5, although specifying
@@ -37,15 +42,23 @@ case "$cc_vendor-$cc_version" in
** gcc version 2.8.1 before reporting bugs to the HDF5 team.
**
EOF
- sleep 5
- ;;
-
- pgcc-2.*)
- v2=`echo $cc_version |cut -f2 -d.`
- v3=`echo $cc_version |cut -f3 -d.`
- v=`expr $v2 '*' 1000 + $v3`
- if test $v -le 91066; then
- cat <<EOF
+ sleep 5
+
+# Current EGCS compilers have problems with `long long' and register
+# allocation when optimizations are turned on for x86 systems.
+elif test egcs = $cc_vendor -a $cc_vers_all -le 2091066; then
+ cat <<EOF
+ **
+ ** This compiler may have problems allocating registers when
+ ** optimizations are enabled on some platforms. Specifying
+ ** --disable-hsizet usually avoids the bug.
+ **
+EOF
+ sleep 5
+
+# All current versions of PGCC have problems also.
+elif test pgcc = $cc_vendor -a $cc_vers_all -le 2091066; then
+ cat <<EOF
**
** This compiler may have problems allocating registers for long
** long data types when optimizations are enabled. There may be
@@ -54,10 +67,9 @@ EOF
** Please use gcc-2.8 or egcs-1.1.1 before reporting bugs.
**
EOF
- sleep 5
- fi
- ;;
-esac
+ sleep 5
+
+fi
# Architecture-specific flags
case "$host_cpu" in
@@ -153,4 +165,4 @@ esac
if test X = "X$cc_flags_set"; then
cc_vendor=
cc_version=
-fi \ No newline at end of file
+fi