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

Message ID 41114A6E-08AB-4269-9E4F-9930BD04D8E2@windriver.com (mailing list archive)
State Not Applicable, archived
Headers

Commit Message

Wiles, Roger Keith Sept. 27, 2014, 5:53 a.m. UTC
  When enabling RTE_LIBRTE_MEMPOOL_DEBUG and compiling with clang
compiler an error occurs, because ifdefed code now includes GCC pragmas.

Signed-off-by: Keith Wiles <keith.wiles@windriver.com>
---
 lib/librte_mempool/rte_mempool.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

—
2.1.0
  

Comments

Wiles, Roger Keith Sept. 28, 2014, 1:08 a.m. UTC | #1
Self nack this one :-(. It looks like the code should be something like this instead:

#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4))
#pragma GCC push_options
#pragma GCC diagnostic ignored "-Wcast-qual"
#endif

GCC 4.4 is when push_options and pop_options showed up in GCC. I will post a new patch, but I wanted to ask if this was the best solution for these ifdefs? If someone sees a better solution please let me know.

Thanks
++Keith

On Sep 27, 2014, at 12:53 AM, Wiles, Roger Keith <keith.wiles@windriver.com> wrote:

> When enabling RTE_LIBRTE_MEMPOOL_DEBUG and compiling with clang
> compiler an error occurs, because ifdefed code now includes GCC pragmas.
> 
> Signed-off-by: Keith Wiles <keith.wiles@windriver.com>
> ---
> lib/librte_mempool/rte_mempool.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h
> index 95f19f9..299d4d7 100644
> --- a/lib/librte_mempool/rte_mempool.h
> +++ b/lib/librte_mempool/rte_mempool.h
> @@ -312,7 +312,7 @@ static inline void __mempool_write_trailer_cookie(void *obj)
>  *   - 2: just check that cookie is valid (free or allocated)
>  */
> #ifdef RTE_LIBRTE_MEMPOOL_DEBUG
> -#ifndef __INTEL_COMPILER
> +#ifdef __GCC__
> #pragma GCC push_options
> #pragma GCC diagnostic ignored "-Wcast-qual"
> #endif
> @@ -379,7 +379,7 @@ static inline void __mempool_check_cookies(const struct rte_mempool *mp,
> 		}
> 	}
> }
> -#ifndef __INTEL_COMPILER
> +#ifdef __GCC__
> #pragma GCC pop_options
> #endif
> #else
> —
> 2.1.0
> 

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

Patch

diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h
index 95f19f9..299d4d7 100644
--- a/lib/librte_mempool/rte_mempool.h
+++ b/lib/librte_mempool/rte_mempool.h
@@ -312,7 +312,7 @@  static inline void __mempool_write_trailer_cookie(void *obj)
  *   - 2: just check that cookie is valid (free or allocated)
  */
 #ifdef RTE_LIBRTE_MEMPOOL_DEBUG
-#ifndef __INTEL_COMPILER
+#ifdef __GCC__
 #pragma GCC push_options
 #pragma GCC diagnostic ignored "-Wcast-qual"
 #endif
@@ -379,7 +379,7 @@  static inline void __mempool_check_cookies(const struct rte_mempool *mp,
 		}
 	}
 }
-#ifndef __INTEL_COMPILER
+#ifdef __GCC__
 #pragma GCC pop_options
 #endif
 #else