[dpdk-dev] [PATCH v2] Clang compile error with RTE_LIBRTE_MEMPOOL_DEBUG enabled.

Wiles, Roger Keith keith.wiles at windriver.com
Wed Oct 1 16:57:12 CEST 2014


Hi Thomas,

Changing the macros to:

#ifdef RTE_LIBRTE_MEMPOOL_DEBUG
#ifndef __INTEL_COMPILER
#pragma GCC diagnostic ignored "-Wcast-qual"
#endif
.
.
#ifndef __INTEL_COMPILER
#pragma GCC diagnostic error "-Wcast-qual"
#endif

Works and is a good solution. I normally do not like negative ‘ifndef’ but it works :-)

Can you make that change if everyone agrees, as would have to remove other changes to that file I want to do in the future to resend this patch. If not I can try and figure it out :-)

Thanks
++Keith

On Oct 1, 2014, at 7:58 AM, Thomas Monjalon <thomas.monjalon at 6wind.com> wrote:

> 2014-09-28 05:30, Wiles, Roger Keith:
>> When enabling RTE_LIBRTE_MEMPOOL_DEBUG and compiling with clang
>> compiler an error occurs, because ifdefed code now includes GCC pragmas.
>> 
>> GCC 4.4 is when push_options and pop_options pragma show up.
>> 
>> Signed-off-by: Keith Wiles <keith.wiles at windriver.com>
> [...]
>> -#ifndef __INTEL_COMPILER
>> +#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4))
>> #pragma GCC push_options
>> #pragma GCC diagnostic ignored "-Wcast-qual"
>> #endif
> 
> Does clang accept const casting with -Wcast-qual?
> 
> I'd prefer to use the same logic as in rte_mempool.c:
> 	#pragma GCC diagnostic ignored "-Wcast-qual"
> 	#pragma GCC diagnostic error "-Wcast-qual"
> without using push/pop.
> Or if push/pop is really needed, it is implemented in clang:
> 	http://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-via-pragmas
> 
> -- 
> Thomas

Keith Wiles, Principal Technologist with CTO office, Wind River mobile 972-213-5533



More information about the dev mailing list