clang - odd macro / conditional expansion behaviour?

Dimitry Andric dim at freebsd.org
Tue Mar 12 07:52:12 UTC 2013


On Mar 12, 2013, at 04:17 , Adrian Chadd <adrian at freebsd.org> wrote:
> 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))
>                                                   ~~~~~~~~~~~~~^~~

I cannot find the exact code you are referencing here, but I assume it is some sort of global initialization?  If so, this is most likely <http://llvm.org/bugs/show_bug.cgi?id=10030>, which has been languishing in LLVM's Bugzilla for a way too long time. :-(



More information about the freebsd-hackers mailing list