Commit d93f870e32 for qemu.org
commit d93f870e324980e5dd6c9beb199cacc5d6bb99a5
Author: Brian Cain <brian.cain@oss.qualcomm.com>
Date: Tue Sep 15 09:30:35 2026 -0700
tests/tcg/multiarch: suppress UBSan for float-to-int conversions
Add __attribute__((no_sanitize("undefined"))) to the float/double
to integer conversion functions.
C17 6.3.1.4p1 only defines float-to-integer conversion for finite
values whose integral part fits in the destination type; it discards
the fractional part and explicitly makes it UB if the integral part
doesn't fit.
These tests intentionally exercise both of those UB cases, so we'll suppress
it to get a clean ubsan run on the TCG test suite.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
diff --git a/tests/tcg/multiarch/float_convd.c b/tests/tcg/multiarch/float_convd.c
index 58d7f8b4c5..cb3884df97 100644
--- a/tests/tcg/multiarch/float_convd.c
+++ b/tests/tcg/multiarch/float_convd.c
@@ -62,6 +62,7 @@ static void convert_double_to_single(double input)
#define str(a) #a
#define CONVERT_DOUBLE_TO_INT(TYPE, FMT) \
+ __attribute__((no_sanitize("undefined"))) \
static void convert_double_to_ ## TYPE(double input) \
{ \
TYPE ## _t output; \
diff --git a/tests/tcg/multiarch/float_convs.c b/tests/tcg/multiarch/float_convs.c
index cb1fdd439e..584ce89aa1 100644
--- a/tests/tcg/multiarch/float_convs.c
+++ b/tests/tcg/multiarch/float_convs.c
@@ -62,6 +62,7 @@ static void convert_single_to_double(float input)
#define str(a) #a
#define CONVERT_SINGLE_TO_INT(TYPE, FMT) \
+ __attribute__((no_sanitize("undefined"))) \
static void convert_single_to_ ## TYPE(float input) \
{ \
TYPE ## _t output; \