summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorichizok <gclient.gaap@gmail.com>2021-12-09 21:08:01 +0000
committerBram Moolenaar <Bram@vim.org>2021-12-09 21:08:01 +0000
commitdee78e1ce857985c06ff18e20daeadfe1622b8ae (patch)
tree88154493cd203d40f170682397645191fb248fcc
parent4c8c634365bc6d4d462635aed5e0f7ad2262d590 (diff)
downloadvim-git-dee78e1ce857985c06ff18e20daeadfe1622b8ae.tar.gz
patch 8.2.3770: new compiler warnings from clang-12 and clang-13v8.2.3770
Problem: New compiler warnings from clang-12 and clang-13. Solution: Adjust CI and suppress some warnings. (Ozaki Kiichi, closes #9314)
-rw-r--r--.github/workflows/ci.yml20
-rw-r--r--ci/config.mk.clang-12.sed3
-rw-r--r--src/os_unix.c10
-rw-r--r--src/spellfile.c2
-rw-r--r--src/version.c2
5 files changed, 29 insertions, 8 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 99223229f..19952df17 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -75,16 +75,16 @@ jobs:
libtool-bin \
libsodium-dev
- - name: Install clang-11
+ - name: Install clang-13
if: matrix.compiler == 'clang'
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
. /etc/lsb-release
- sudo add-apt-repository -y "deb http://apt.llvm.org/${DISTRIB_CODENAME}/ llvm-toolchain-${DISTRIB_CODENAME}-11 main"
- sudo apt-get install -y clang-11 llvm-11
- sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-11 100
- sudo update-alternatives --set clang /usr/bin/clang-11
- sudo update-alternatives --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-11 100
+ sudo add-apt-repository -y "deb http://apt.llvm.org/${DISTRIB_CODENAME}/ llvm-toolchain-${DISTRIB_CODENAME}-13 main"
+ sudo apt-get install -y clang-13 llvm-13
+ sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-13 100
+ sudo update-alternatives --set clang /usr/bin/clang-13
+ sudo update-alternatives --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-13 100
- name: Set up environment
run: |
@@ -188,6 +188,10 @@ jobs:
# Append various warning flags to CFLAGS.
sed -i -f ci/config.mk.sed ${SRCDIR}/auto/config.mk
sed -i -f ci/config.mk.${CC}.sed ${SRCDIR}/auto/config.mk
+ if [[ ${CC} = clang ]]; then
+ # Suppress some warnings produced by clang 12 and later.
+ sed -i -f ci/config.mk.clang-12.sed ${SRCDIR}/auto/config.mk
+ fi
- name: Build
if: (!contains(matrix.extra, 'unittests'))
@@ -296,6 +300,10 @@ jobs:
sed -i.bak -f ci/config.mk.sed ${SRCDIR}/auto/config.mk
# On macOS, the entity of gcc is clang.
sed -i.bak -f ci/config.mk.clang.sed ${SRCDIR}/auto/config.mk
+ # Suppress some warnings produced by clang 12 and later.
+ if clang --version | grep -qs 'Apple clang version \(1[3-9]\|[2-9]\)\.'; then
+ sed -i.bak -f ci/config.mk.clang-12.sed ${SRCDIR}/auto/config.mk
+ fi
- name: Build
env:
diff --git a/ci/config.mk.clang-12.sed b/ci/config.mk.clang-12.sed
new file mode 100644
index 000000000..e305c5966
--- /dev/null
+++ b/ci/config.mk.clang-12.sed
@@ -0,0 +1,3 @@
+# Clang 12 (or Apple clang 13) and later makes a warning '-Wcompound-token-split-by-macro' enable by default.
+/^PERL_CFLAGS[[:blank:]]*=/s/$/ -Wno-error=compound-token-split-by-macro/
+/^RUBY_CFLAGS[[:blank:]]*=/s/$/ -Wno-error=compound-token-split-by-macro/
diff --git a/src/os_unix.c b/src/os_unix.c
index 32850f3bf..1c00f2279 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -3376,7 +3376,15 @@ exit_scroll(void)
}
#ifdef USE_GCOV_FLUSH
-extern void __gcov_flush();
+# if (defined(__GNUC__) \
+ && ((__GNUC__ == 11 && __GNUC_MINOR__ >= 1) || (__GNUC__ >= 12))) \
+ || (defined(__clang__) && (__clang_major__ >= 12))
+extern void __gcov_dump(void);
+extern void __gcov_reset(void);
+# define __gcov_flush() do { __gcov_dump(); __gcov_reset(); } while (0)
+# else
+extern void __gcov_flush(void);
+# endif
#endif
void
diff --git a/src/spellfile.c b/src/spellfile.c
index 6d6c248ab..46d222d9b 100644
--- a/src/spellfile.c
+++ b/src/spellfile.c
@@ -6576,7 +6576,7 @@ write_spell_prefcond(FILE *fd, garray_T *gap)
char_u *p;
int len;
int totlen;
- size_t x = 1; // collect return value of fwrite()
+ size_t x UNUSED = 1; // collect return value of fwrite()
if (fd != NULL)
put_bytes(fd, (long_u)gap->ga_len, 2); // <prefcondcnt>
diff --git a/src/version.c b/src/version.c
index 5aa6ce73e..5db7dca5d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3770,
+/**/
3769,
/**/
3768,