[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
floorf, ceilf tests: Strengthen against compiler optimizations
|
From: |
Bruno Haible |
|
Subject: |
floorf, ceilf tests: Strengthen against compiler optimizations |
|
Date: |
Fri, 24 Nov 2023 20:34:45 +0100 |
René Rebe noticed that in a slightly modified version of test-floorf-ieee.c,
"gcc -O2" inlines the 'floorf' function, despite the conditional expression
initializer. The test is pointless with this inlining. This patch provides
a defense against it.
2023-11-24 Bruno Haible <bruno@clisp.org>
floorf, ceilf tests: Strengthen against compiler optimizations.
Reported by René Rebe <rene@t2-project.org>.
* tests/test-floorf1.c (main): Mark my_floorf as 'volatile'.
* tests/test-floorf-ieee.c (main): Likewise.
* tests/test-ceilf1.c (main): Mark my_ceilf as 'volatile'.
* tests/test-ceilf-ieee.c (main): Likewise.
diff --git a/tests/test-ceilf-ieee.c b/tests/test-ceilf-ieee.c
index 02edc0d92a..bfdceee1c5 100644
--- a/tests/test-ceilf-ieee.c
+++ b/tests/test-ceilf-ieee.c
@@ -38,7 +38,7 @@ dummy (float f)
int
main (int argc, _GL_UNUSED char **argv)
{
- float (*my_ceilf) (float) = argc ? ceilf : dummy;
+ float (* volatile my_ceilf) (float) = argc ? ceilf : dummy;
/* See IEEE 754, section 6.3:
"the sign of the result of the round floating-point number to
diff --git a/tests/test-ceilf1.c b/tests/test-ceilf1.c
index 61a4ae99b5..2ad2b30fb0 100644
--- a/tests/test-ceilf1.c
+++ b/tests/test-ceilf1.c
@@ -43,7 +43,7 @@ dummy (float f)
int
main (int argc, _GL_UNUSED char **argv)
{
- float (*my_ceilf) (float) = argc ? ceilf : dummy;
+ float (* volatile my_ceilf) (float) = argc ? ceilf : dummy;
/* Zero. */
ASSERT (my_ceilf (0.0f) == 0.0f);
diff --git a/tests/test-floorf-ieee.c b/tests/test-floorf-ieee.c
index 32ceb5b7b1..8b1a02ac89 100644
--- a/tests/test-floorf-ieee.c
+++ b/tests/test-floorf-ieee.c
@@ -38,7 +38,7 @@ dummy (float f)
int
main (int argc, _GL_UNUSED char **argv)
{
- float (*my_floorf) (float) = argc ? floorf : dummy;
+ float (* volatile my_floorf) (float) = argc ? floorf : dummy;
/* See IEEE 754, section 6.3:
"the sign of the result of the round floating-point number to
diff --git a/tests/test-floorf1.c b/tests/test-floorf1.c
index b2787f6ff3..39b7a48432 100644
--- a/tests/test-floorf1.c
+++ b/tests/test-floorf1.c
@@ -43,7 +43,7 @@ dummy (float f)
int
main (int argc, _GL_UNUSED char **argv)
{
- float (*my_floorf) (float) = argc ? floorf : dummy;
+ float (* volatile my_floorf) (float) = argc ? floorf : dummy;
/* Zero. */
ASSERT (my_floorf (0.0f) == 0.0f);
| [Prev in Thread] |
Current Thread |
[Next in Thread] |
- floorf, ceilf tests: Strengthen against compiler optimizations,
Bruno Haible <=