Silence -Wfloat-equal warnings

Silence the existing, benign looking code, but ensure we get a warning
for new code with such issues.
This commit is contained in:
Marc Lasch 2023-06-06 10:33:36 +02:00 committed by mlasch
parent aa1269cbc3
commit 0d2507fb19
3 changed files with 21 additions and 0 deletions

View File

@ -329,6 +329,8 @@ int prv_put_float(uint8_t *buffer, size_t bufferLen, double val) {
if (bufferLen < 3)
return 0;
_Pragma("GCC diagnostic push");
_Pragma("GCC diagnostic ignored \"-Wfloat-equal\"");
if (val != val) {
// NaN
buffer[0] = (CBOR_FLOATING_OR_SIMPLE << 5) | CBOR_AI_TWO_BYTE_VALUE;
@ -409,6 +411,7 @@ int prv_put_float(uint8_t *buffer, size_t bufferLen, double val) {
buffer[8] = (uint8_t)uval;
result = 9;
}
_Pragma("GCC diagnostic pop");
return result;
}

View File

@ -344,6 +344,8 @@ static double prv_convert_half(uint16_t half) {
}
static void prv_output_cbor_float(FILE *stream, double val) {
_Pragma("GCC diagnostic push");
_Pragma("GCC diagnostic ignored \"-Wfloat-equal\"");
if (val != val) {
fprintf(stream, "NaN");
} else if (val == INFINITY) {
@ -353,6 +355,7 @@ static void prv_output_cbor_float(FILE *stream, double val) {
} else {
fprintf(stream, "%g", val);
}
_Pragma("GCC diagnostic pop");
}
static int prv_output_cbor_definite(FILE *stream, uint8_t *buffer, size_t buffer_len, bool breakable, uint8_t *mt) {

View File

@ -866,7 +866,10 @@ static void cbor_test_72(void) {
CU_ASSERT_EQUAL_FATAL(size, 1);
CU_ASSERT_EQUAL(tlvP->id, 1);
CU_ASSERT_EQUAL_FATAL(tlvP->type, LWM2M_TYPE_FLOAT);
_Pragma("GCC diagnostic push");
_Pragma("GCC diagnostic ignored \"-Wfloat-equal\"");
CU_ASSERT_NOT_EQUAL_FATAL(tlvP->value.asFloat, tlvP->value.asFloat);
_Pragma("GCC diagnostic pop");
lwm2m_data_free(size, tlvP);
}
@ -885,7 +888,10 @@ static void cbor_test_73(void) {
CU_ASSERT_EQUAL_FATAL(size, 1);
CU_ASSERT_EQUAL(tlvP->id, 1);
CU_ASSERT_EQUAL_FATAL(tlvP->type, LWM2M_TYPE_FLOAT);
_Pragma("GCC diagnostic push");
_Pragma("GCC diagnostic ignored \"-Wfloat-equal\"");
CU_ASSERT_EQUAL_FATAL(tlvP->value.asFloat, -INFINITY);
_Pragma("GCC diagnostic pop");
lwm2m_data_free(size, tlvP);
}
@ -904,7 +910,10 @@ static void cbor_test_74(void) {
CU_ASSERT_EQUAL_FATAL(size, 1);
CU_ASSERT_EQUAL(tlvP->id, 1);
CU_ASSERT_EQUAL_FATAL(tlvP->type, LWM2M_TYPE_FLOAT);
_Pragma("GCC diagnostic push");
_Pragma("GCC diagnostic ignored \"-Wfloat-equal\"");
CU_ASSERT_EQUAL_FATAL(tlvP->value.asFloat, INFINITY);
_Pragma("GCC diagnostic pop");
lwm2m_data_free(size, tlvP);
}
@ -923,7 +932,10 @@ static void cbor_test_75(void) {
CU_ASSERT_EQUAL_FATAL(size, 1);
CU_ASSERT_EQUAL(tlvP->id, 1);
CU_ASSERT_EQUAL_FATAL(tlvP->type, LWM2M_TYPE_FLOAT);
_Pragma("GCC diagnostic push");
_Pragma("GCC diagnostic ignored \"-Wfloat-equal\"");
CU_ASSERT_NOT_EQUAL_FATAL(tlvP->value.asFloat, tlvP->value.asFloat);
_Pragma("GCC diagnostic pop");
lwm2m_data_free(size, tlvP);
}
@ -942,7 +954,10 @@ static void cbor_test_76(void) {
CU_ASSERT_EQUAL_FATAL(size, 1);
CU_ASSERT_EQUAL(tlvP->id, 1);
CU_ASSERT_EQUAL_FATAL(tlvP->type, LWM2M_TYPE_FLOAT);
_Pragma("GCC diagnostic push");
_Pragma("GCC diagnostic ignored \"-Wfloat-equal\"");
CU_ASSERT_EQUAL_FATAL(tlvP->value.asFloat, -INFINITY);
_Pragma("GCC diagnostic pop");
lwm2m_data_free(size, tlvP);
}