Skip to content

Commit c129b6d

Browse files
committed
[COMPILER_APITEST] Disable some tests for GCC
We cannot fix these, since GCC inlines the conversion.
1 parent 4b87ae3 commit c129b6d

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

modules/rostests/apitests/compiler/floatconv.c

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,6 @@
3838
#define ULONGLONG_OVERFLOW 0x8000000000000000ull
3939
#endif
4040

41-
#ifdef __GNUC__
42-
#define todo_gcc todo_ros
43-
#else
44-
#define todo_gcc
45-
#endif
46-
4741
__declspec(noinline)
4842
long cast_float_to_long(float f)
4943
{
@@ -157,8 +151,10 @@ void Test_float(void)
157151
ok_eq_ulonglong(cast_float_to_ulonglong(9223371487098961920.0f), 9223371487098961920ull); // 0x7FFFFF8000000000
158152
ok_eq_ulonglong(cast_float_to_ulonglong(9223372036854775808.0f), 9223372036854775808ull); // 0x8000000000000000
159153
ok_eq_ulonglong(cast_float_to_ulonglong(18446743523953737727.9f), 18446742974197923840ull); // 0xFFFFFF0000000000
160-
todo_gcc ok_eq_ulonglong(cast_float_to_ulonglong(18446743523953737728.0f), ULONGLONG_OVERFLOW); // 0x8000000000000000 / 0xFFFFFFFFFFFFFFFF
161-
todo_gcc ok_eq_ulonglong(cast_float_to_ulonglong(20000000000000000000.0f), ULONGLONG_OVERFLOW); // 0x8000000000000000 / 0xFFFFFFFFFFFFFFFF
154+
#ifndef __GNUC__ // GCC inlines the conversion, we cannot fix this
155+
ok_eq_ulonglong(cast_float_to_ulonglong(18446743523953737728.0f), ULONGLONG_OVERFLOW); // 0x8000000000000000 / 0xFFFFFFFFFFFFFFFF
156+
ok_eq_ulonglong(cast_float_to_ulonglong(20000000000000000000.0f), ULONGLONG_OVERFLOW); // 0x8000000000000000 / 0xFFFFFFFFFFFFFFFF
157+
#endif
162158

163159
// float to unsigned long long cast (negative values)
164160
ok_eq_ulonglong(cast_float_to_ulonglong(-0.0f), 0ull);
@@ -245,9 +241,11 @@ void Test_double(void)
245241
ok_eq_ulonglong(cast_double_to_ulonglong(9223372036854774784.0), 9223372036854774784ull); // 0x7FFFFFFFFFFFFC00
246242
ok_eq_ulonglong(cast_double_to_ulonglong(9223372036854775808.0), 9223372036854775808ull); // 0x8000000000000000
247243
ok_eq_ulonglong(cast_double_to_ulonglong(18446744073709550591.9), 18446744073709549568ull); // 0xFFFFFFFFFFFFF800
248-
todo_gcc ok_eq_ulonglong(cast_double_to_ulonglong(18446744073709550592.0), ULONGLONG_OVERFLOW); // 0x8000000000000000 / 0xFFFFFFFFFFFFFFFF
249-
todo_gcc ok_eq_ulonglong(cast_double_to_ulonglong(18446744073709551616.0), ULONGLONG_OVERFLOW); // 0x8000000000000000 / 0xFFFFFFFFFFFFFFFF
250-
todo_gcc ok_eq_ulonglong(cast_double_to_ulonglong(20000000000000000000.0), ULONGLONG_OVERFLOW); // 0x8000000000000000 / 0xFFFFFFFFFFFFFFFF
244+
#ifndef __GNUC__ // GCC inlines the conversion, we cannot fix this
245+
ok_eq_ulonglong(cast_double_to_ulonglong(18446744073709550592.0), ULONGLONG_OVERFLOW); // 0x8000000000000000 / 0xFFFFFFFFFFFFFFFF
246+
ok_eq_ulonglong(cast_double_to_ulonglong(18446744073709551616.0), ULONGLONG_OVERFLOW); // 0x8000000000000000 / 0xFFFFFFFFFFFFFFFF
247+
ok_eq_ulonglong(cast_double_to_ulonglong(20000000000000000000.0), ULONGLONG_OVERFLOW); // 0x8000000000000000 / 0xFFFFFFFFFFFFFFFF
248+
#endif
251249

252250
// float to unsigned long long cast (negative values)
253251
ok_eq_ulonglong(cast_double_to_ulonglong(-0.0), 0ull);

0 commit comments

Comments
 (0)