I've hit this rather amusing clang behaviour:
In file included from /usr/home/adrian/work/freebsd/ath/head/src/sys/modules/ath/../../contrib/sys/dev/ath/ath_hal/ar9300/ar9300_eeprom.c:21: /usr/home/adrian/work/freebsd/ath/head/src/sys/modules/ath/../../contrib/sys/dev/ath/ath_hal/ar9300/ar9300template_generic.h:107:3: error: implicit conversion from 'int' to 'u_int8_t' (aka 'unsigned char') changes value from -477 to 35 [-Werror,-Wconstant-conversion] FREQ2FBIN(2412, 1), ^~~~~~~~~~~~~~~~~~ /usr/home/adrian/work/freebsd/ath/head/src/sys/modules/ath/../../contrib/sys/dev/ath/ath_hal/ar9300/ar9300eep.h:136:65: note: expanded from macro 'FREQ2FBIN' (((y) == HAL_FREQ_BAND_2GHZ) ? ((x) - 2300) : (((x) - 4800) / 5)) ~~~~~~~~~~~~~^~~ .. now, HAL_FREQ_BAND_2GHZ is defined here as: typedef enum { HAL_FREQ_BAND_5GHZ = 0, HAL_FREQ_BAND_2GHZ = 1, } HAL_FREQ_BAND; And: #define FREQ2FBIN(x,y) \ (((y) == HAL_FREQ_BAND_2GHZ) ? ((x) - 2300) : (((x) - 4800) / 5)) And all of those macros here have '1' in the second field, yet when they're expanded they evaluate as if it were false. So, what's going on? :-) gcc is fine with this. :) Thanks! Adrian _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"