[v1] bbdev: prevent clang 3.4.2 compilation error

Message ID 20221010170403.21201-1-nicolas.chautru@intel.com (mailing list archive)
State Accepted, archived
Delegated to: akhil goyal
Headers
Series [v1] bbdev: prevent clang 3.4.2 compilation error |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-aarch64-unit-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/intel-Testing success Testing PASS
ci/iol-x86_64-unit-testing fail Testing issues
ci/iol-aarch64-compile-testing success Testing PASS

Commit Message

Chautru, Nicolas Oct. 10, 2022, 5:04 p.m. UTC
  Casting explicitly from enum to uint8_t to avoid compilation
warning with clang 3.4.2 -Wtautological-constant-out-of-range-compare

Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
---
 lib/bbdev/rte_bbdev.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
  

Comments

Ali Alnubani Oct. 10, 2022, 6:39 p.m. UTC | #1
> -----Original Message-----
> From: Nicolas Chautru <nicolas.chautru@intel.com>
> Sent: Monday, October 10, 2022 8:04 PM
> To: NBU-Contact-Thomas Monjalon (EXTERNAL) <thomas@monjalon.net>;
> dev@dpdk.org; gakhil@marvell.com
> Cc: Nicolas Chautru <nicolas.chautru@intel.com>
> Subject: [PATCH v1] bbdev: prevent clang 3.4.2 compilation error
> 
> Casting explicitly from enum to uint8_t to avoid compilation
> warning with clang 3.4.2 -Wtautological-constant-out-of-range-compare
> 
> Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
> ---

Verified that the build passes with this patch. Thanks Nicolas.

Tested-by: Ali Alnubani <alialnu@nvidia.com>
  
Thomas Monjalon Oct. 10, 2022, 11:27 p.m. UTC | #2
> > Casting explicitly from enum to uint8_t to avoid compilation
> > warning with clang 3.4.2 -Wtautological-constant-out-of-range-compare
> > 
> > Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com>
> 
> Verified that the build passes with this patch. Thanks Nicolas.
> 
> Tested-by: Ali Alnubani <alialnu@nvidia.com>

Applied with more complete commit message, thanks:

bbdev: fix build with clang 3.4.2

Casting explicitly from enum to uint8_t to avoid compilation
warning with clang 3.4.2:

  rte_bbdev.c:1179:13: error:
  comparison of constant 4 with expression
  of type 'enum rte_bbdev_enqueue_status' is always true
  [-Werror,-Wtautological-constant-out-of-range-compare]

Bugzilla ID: 1095
Fixes: 1be86f2e94e4 ("bbdev: add device status info")
Fixes: 4f08028c5e24 ("bbdev: expose queue related warning and status")
  

Patch

diff --git a/lib/bbdev/rte_bbdev.c b/lib/bbdev/rte_bbdev.c
index 453e5747b6..1521cdbc53 100644
--- a/lib/bbdev/rte_bbdev.c
+++ b/lib/bbdev/rte_bbdev.c
@@ -1159,7 +1159,8 @@  rte_bbdev_device_status_str(enum rte_bbdev_device_status status)
 		"RTE_BBDEV_DEV_CORRECT_ERR",
 	};
 
-	if (status < sizeof(dev_sta_string) / sizeof(char *))
+	/* Cast from enum required for clang. */
+	if ((uint8_t)status < sizeof(dev_sta_string) / sizeof(char *))
 		return dev_sta_string[status];
 
 	rte_bbdev_log(ERR, "Invalid device status");
@@ -1176,7 +1177,8 @@  rte_bbdev_enqueue_status_str(enum rte_bbdev_enqueue_status status)
 		"RTE_BBDEV_ENQ_STATUS_INVALID_OP",
 	};
 
-	if (status < sizeof(enq_sta_string) / sizeof(char *))
+	/* Cast from enum required for clang. */
+	if ((uint8_t)status < sizeof(enq_sta_string) / sizeof(char *))
 		return enq_sta_string[status];
 
 	rte_bbdev_log(ERR, "Invalid enqueue status");