Skip to content

Commit

Permalink
patch 9.0.1517: MacOS: configure removes -O2 from $CFLAGS
Browse files Browse the repository at this point in the history
Problem:    MacOS: configure removes -O2 from $CFLAGS.
Solution:   Only adjust $CFLAGS for gcc. (closes #12351)
  • Loading branch information
AtariDreams authored and brammool committed May 6, 2023
1 parent 3ab3a86 commit 00d07e7
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 16 deletions.
9 changes: 3 additions & 6 deletions src/auto/configure
Expand Up @@ -4477,12 +4477,14 @@ if test -z "$CFLAGS"; then
CFLAGS="-O"
test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall -Wno-deprecated-declarations"
fi

if test "$GCC" = yes; then
gccversion=`$CC -dumpversion`
if test "x$gccversion" = "x"; then
gccversion=`$CC --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[^0-9]*\([0-9]\.[0-9.]*\).*$/\1/g'`
fi
if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then

if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
echo 'GCC [34].0.[12] has a bug in the optimizer, disabling "-O#"'
CFLAGS=`echo "$CFLAGS" | sed 's/-O[23456789]/-O/'`
else
Expand Down Expand Up @@ -4777,11 +4779,6 @@ rm -f core conftest.err conftest.$ac_objext \
with_x=no
fi
fi

if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
CFLAGS=`echo "$CFLAGS" | sed 's/-O[23456789]/-Oz/'`
fi

else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
Expand Down
17 changes: 7 additions & 10 deletions src/configure.ac
Expand Up @@ -93,14 +93,19 @@ if test -z "$CFLAGS"; then
CFLAGS="-O"
test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall -Wno-deprecated-declarations"
fi

if test "$GCC" = yes; then
dnl method that should work for nearly all versions
dnl Method that should work for nearly all gcc versions.
gccversion=`$CC -dumpversion`
if test "x$gccversion" = "x"; then
dnl old method; fall-back for when -dumpversion doesn't work
gccversion=`$CC --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
fi
dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki

dnl Gcc version 4.0.1 was reported to cause trouble on Macintosh by Marcin
dnl Dalecki. For Mac with Intel the symptom reported is: malloc() reports
dnl double free. This happens in expand_filename(), because the optimizer
dnl swaps two blocks of code, both using "repl", that can't be swapped.
if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
Expand Down Expand Up @@ -299,14 +304,6 @@ if test "$vim_cv_uname_output" = Darwin; then
with_x=no
fi
fi

dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
dnl free. This happens in expand_filename(), because the optimizer swaps
dnl two blocks of code, both using "repl", that can't be swapped.
if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
fi

else
AC_MSG_RESULT(no)
fi
Expand Down
2 changes: 2 additions & 0 deletions src/version.c
Expand Up @@ -695,6 +695,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1517,
/**/
1516,
/**/
Expand Down

0 comments on commit 00d07e7

Please sign in to comment.