diff options
author | dim <dim@FreeBSD.org> | 2011-12-21 15:59:18 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2011-12-21 15:59:18 +0000 |
commit | d9a69f25c9869a21e66cdf209e22ffb23d12a35f (patch) | |
tree | f3a6788e4c15959c2ff13c7b8231946bc1c3bb17 | |
parent | ddda7a76813bc31bfd63d1553e8948e19dbd07c6 (diff) | |
download | FreeBSD-src-d9a69f25c9869a21e66cdf209e22ffb23d12a35f.zip FreeBSD-src-d9a69f25c9869a21e66cdf209e22ffb23d12a35f.tar.gz |
Start selectively disabling a few kernel build warnings for clang, since
there are some places in the kernel where fixing them is too disruptive,
or where there is a false positive.
In this case, disable -Wconstant-conversion for two aic7xxx-related
files, as they get the following warning on i386 (and possibly on other
32-bit arches):
sys/dev/aic7xxx/ahc_pci.c:112:10: warning: implicit conversion from 'long long' to 'bus_addr_t' (aka 'unsigned int') changes value from 549755813887 to 4294967295 [-Wconstant-conversion]
? 0x7FFFFFFFFFLL
~~^~~~~~~~~~~~~~
This is a false positive, since the code only passes the 0x7FFFFFFFFFLL
argument, if sizeof(bus_addr_t) is larger than 4 (e.g. on 64 bit arches,
or when PAE is enabled on i386). The code could be refactored to do
compile-time checks, but that is more disruptive.
MFC after: 1 week
-rw-r--r-- | sys/conf/files | 6 | ||||
-rw-r--r-- | sys/conf/kern.mk | 7 |
2 files changed, 11 insertions, 2 deletions
diff --git a/sys/conf/files b/sys/conf/files index 8000e7f..bf9cdaf 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -508,8 +508,10 @@ dev/aic/aic.c optional aic dev/aic/aic_pccard.c optional aic pccard dev/aic7xxx/ahc_eisa.c optional ahc eisa dev/aic7xxx/ahc_isa.c optional ahc isa -dev/aic7xxx/ahc_pci.c optional ahc pci -dev/aic7xxx/ahd_pci.c optional ahd pci +dev/aic7xxx/ahc_pci.c optional ahc pci \ + compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}" +dev/aic7xxx/ahd_pci.c optional ahd pci \ + compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}" dev/aic7xxx/aic7770.c optional ahc dev/aic7xxx/aic79xx.c optional ahd pci dev/aic7xxx/aic79xx_osm.c optional ahd pci diff --git a/sys/conf/kern.mk b/sys/conf/kern.mk index 9537e70..4b1afee 100644 --- a/sys/conf/kern.mk +++ b/sys/conf/kern.mk @@ -11,6 +11,13 @@ CWARNFLAGS?= -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes \ # The following flags are next up for working on: # -Wextra +# Disable a few warnings for clang, since there are several places in the +# kernel where fixing them is more trouble than it is worth, or where there is +# a false positive. +.if ${CC:T:Mclang} == "clang" +NO_WCONSTANT_CONVERSION= -Wno-constant-conversion +.endif + # # On i386, do not align the stack to 16-byte boundaries. Otherwise GCC 2.95 # and above adds code to the entry and exit point of every function to align the |