The include file should not change the GCC compile options for the whole file being compiled, but only for the one inline function that needs it. Using the push_options/pop_options fixes this. Signed-off-by: Stephen Hemminger --- a/lib/librte_mempool/rte_mempool.h 2014-01-23 09:15:55.000000000 -0800 +++ b/lib/librte_mempool/rte_mempool.h 2014-03-06 15:19:56.551238180 -0800 @@ -314,6 +314,7 @@ static inline void __mempool_write_trail */ #ifdef RTE_LIBRTE_MEMPOOL_DEBUG #ifndef __INTEL_COMPILER +#pragma GCC push_options #pragma GCC diagnostic ignored "-Wcast-qual" #endif static inline void __mempool_check_cookies(const struct rte_mempool *mp, @@ -380,7 +381,7 @@ static inline void __mempool_check_cooki } } #ifndef __INTEL_COMPILER -#pragma GCC diagnostic error "-Wcast-qual" +#pragma GCC pop_options #endif #else #define __mempool_check_cookies(mp, obj_table_const, n, free) do {} while(0)