[dpdk-dev] error: value computed is not used

Qiu, Michael michael.qiu at intel.com
Mon Dec 8 10:05:49 CET 2014


Hi all,
My platform is:

uname -a
Linux suse-11-sp3 3.0.77-0.11-xen #1 SMP Tue Mar 11 16:48:56 CST 2014
x86_64 x86_64 x86_64 GNU/Linux

gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.5/lto-wrapper
Target: x86_64-suse-linux
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info
--mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64
--enable-languages=c,c++,objc,fortran,obj-c++,java,ada
--enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.5
--enable-ssp --disable-libssp --disable-plugin
--with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux'
--disable-libgcj --disable-libmudflap --with-slibdir=/lib64
--with-system-zlib --enable-__cxa_atexit
--enable-libstdcxx-allocator=new --disable-libstdcxx-pch
--enable-version-specific-runtime-libs --program-suffix=-4.5
--enable-linux-futex --without-system-libunwind --enable-gold
--with-plugin-ld=/usr/bin/gold --with-arch-32=i586 --with-tune=generic
--build=x86_64-suse-linux
Thread model: posix
gcc version 4.5.1 20101208 [gcc-4_5-branch revision 167585] (SUSE Linux)

When I try to compile the source code to x86_64 linuxapp, I got this
error message:

lib/librte_pmd_enic/enic_main.c: In function ‘enic_set_rsskey’:
lib/librte_pmd_enic/enic_main.c:862:2: error: value computed is not used

I dig out that, it was ome issue of  the macros rte_memcpy()
#define rte_memcpy(dst, src, n)              \
        ((__builtin_constant_p(n)) ?          \
        memcpy((dst), (src), (n)) :          \
        rte_memcpy_func((dst), (src), (n)))

When I use only (n) instead of (__builtin_constant_p(n), it will pass( I
know that it was incorrect, just a experiment).

But I try to use inline function instead of macros:
static inline void * rte_memcpy(void *dst, const void *src, size_t n)
{
        return __builtin_constant_p(n) ? memcpy(dst, src, n) :
                                         rte_memcpy_func(dst, src, n);
}

It will pass:), and works, this could be one potential workaround fix.

Who knows why? The root cause is what?

I've no idea about this.

Thanks,
Michael


More information about the dev mailing list