clang - odd macro / conditional expansion behaviour?

Adrian Chadd adrian at freebsd.org
Tue Mar 12 17:34:20 UTC 2013


On 12 March 2013 00:52, Dimitry Andric <dim at freebsd.org> wrote:
> 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. :-(
>

Yup it is, and yup it looks like this.



adrian


More information about the freebsd-hackers mailing list