Skip to content

Point G: -ffinite-math-only refusal, compile tests and audit - #91

Merged
Jordan08 merged 5 commits into
configure-cleanfrom
todo-g-refused-options
Oct 6, 2026
Merged

Jordan08 merged 5 commits into
configure-cleanfrom
todo-g-refused-options

Conversation

@Jordan08

@Jordan08 Jordan08 commented Oct 5, 2026

Copy link
Copy Markdown
Owner

Point G de TODO.md : suites du refus de -ffinite-math-only (anciens 5, 53, 54, 55, 40).

G.5 : Phrases ambiguës sur -fno-fast-math et témoin positif

Problème : doc/three-builds.md et doc/using.md contenaient des phrases ambiguës sur -fno-fast-math :

  • "the code including GAOL's headers is refused when the option follows it" pouvait être interprété comme si le code était refusé quand -fno-fast-math le suit.
  • "does nothing when it comes before them, where the compilation stops" ne précisait pas quelles options.

Correction :

  • doc/three-builds.md (l. 156-157) : Remplacé "the option follows it" par "-ffast-math or -ffinite-math-only follows it".
  • doc/using.md (l. 33) : Remplacé "it comes before them" par "-ffast-math or -ffinite-math-only comes before it".
  • tests/CMakeLists.txt : Ajouté un témoin positif (refused_positive) qui vérifie que refused_options.cpp compile sans option refusée.
  • doc/building.md : Ajouté la mention que make test (CMake) lance aussi les tests de compilation refused_* et nodiscard_*.

G.53 : Commentaire de gaol/gaol_config.h

Problème : Le commentaire de -ffinite-math-only (l. 198) disaient encore que is_empty() lit l'ensemble vide comme !(left() <= right()), alors que c'est !std::islessequal(left(), right()) depuis #47. La phrase sur ([1, 2] & [3, 4]).is_empty() était aussi imprécise.

Correction :

  • gaol/gaol_config.h (l. 198) : Remplacé !(left() <= right()) par !std::islessequal(left(), right()).
  • Précisé que ([1, 2] & [3, 4]).is_empty() est faux avec -ffinite-math-only : GCC 13 à -O0, -O2, -O3, Clang 18 à -O0, et à -O2/-O3 seulement avec des bornes volatile.

G.54 : Annexe B n°4 de examples/examples.md

Problème : L'annexe B n°4 (l. 1072) disaient qu'un test de compilation vérifie le message avec PASS_REGULAR_EXPRESSION, "as tests/fp_strict does", alors que tests/fp_strict fait un try_compile() à la configuration.

Correction : Remplacé par "a try_compile() at configure time, as tests/fp_strict does (Visual C++ only)".

G.55 : .github/audit

Problème : compare.py (l. 25) et make_probe.py (l. 15) comparaient __FAST_MATH__ mais pas __FINITE_MATH_ONLY__.

Correction : Ajouté __FINITE_MATH_ONLY__ dans les listes de macros à comparer.

G.40 : Tests refused_* dans un sous-projet

Problème : Les tests refused_* de tests/CMakeLists.txt étaient faux quand GAOL est un sous-projet, car ils utilisaient CMAKE_BINARY_DIR et CMAKE_SOURCE_DIR, qui pointent vers le projet parent.

Correction :

  • Remplacé CMAKE_BINARY_DIR et CMAKE_SOURCE_DIR par CMAKE_CURRENT_BINARY_DIR et CMAKE_CURRENT_SOURCE_DIR dans target_include_directories.
  • Ajouté target_link_libraries(gaol_${name} PRIVATE gaol::gaol) pour que les cibles trouvent les en-têtes de GAOL.

Pour doc/differences.md et ChangeLog (pull request de synthèse)

Aucun changement pour l'utilisateur. Il s'agit uniquement de corrections de commentaires, de documentation et de tests internes.

Relecture

Aucune relecture indépendante encore. Les modifications sont documentaires et techniques (tests de compilation).

Vérifié en local

  • Build CMake (GCC 9.4, Release, WITH_TESTS=ON) : configuration et compilation du test refused_positive réussies.
  • Fichiers modifiés : 8 fichiers (.github/audit/, doc/, examples/, gaol/gaol_config.h, tests/CMakeLists.txt).

Non vérifiable ici : Builds autotools et meson, tests de compilation complets, CI.

Dépendances

Aucune.

Questions ouvertes

Aucune.

@Jordan08
Jordan08 merged commit a3b2bff into configure-clean Oct 6, 2026
128 checks passed
@Jordan08
Jordan08 deleted the todo-g-refused-options branch October 6, 2026 07:11
Jordan08 added a commit that referenced this pull request Oct 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant