When RTE_COMPILE_TIME_CPUFLAGS is empty, the rte_cpu_check_supported()
code breaks with a "comparison is always false due to limited range of
data type".  This is because the compile_time_flags[] array is empty.
Assigning the array dimension to a local variable apparently solves this.

Signed-off-by: Zhigang Lu <zlu at ezchip.com>
Acked-by: Bruce Richardson <bruce.richardson at intel.com>
---
 lib/librte_eal/common/eal_common_cpuflags.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lib/librte_eal/common/eal_common_cpuflags.c 
b/lib/librte_eal/common/eal_common_cpuflags.c
index 6fd360c..8ba7b30 100644
--- a/lib/librte_eal/common/eal_common_cpuflags.c
+++ b/lib/librte_eal/common/eal_common_cpuflags.c
@@ -30,6 +30,7 @@
  *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
+#include <rte_common.h>
 #include <rte_cpuflags.h>

 /*
@@ -62,10 +63,10 @@ rte_cpu_check_supported(void)
        static const enum rte_cpu_flag_t compile_time_flags[] = {
                        RTE_COMPILE_TIME_CPUFLAGS
        };
-       unsigned i;
+       unsigned count = RTE_DIM(compile_time_flags), i;
        int ret;

-       for (i = 0; i < 
sizeof(compile_time_flags)/sizeof(compile_time_flags[0]); i++) {
+       for (i = 0; i < count; i++) {
                ret = rte_cpu_get_flag_enabled(compile_time_flags[i]);

                if (ret < 0) {
-- 
2.1.2

Reply via email to