Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use std::unreachable() or similar compiler specific extensions for dead but necessary code #425

Merged
merged 1 commit into from
Nov 16, 2024

Conversation

fktn-k
Copy link
Owner

@fktn-k fktn-k commented Nov 16, 2024

The current library deliberately implements some dead codes to suppress warnings against default switch-cases. However, such codes are considered as a possible path from the compiler's view as much frequently as the other "valid" cases.
So, in this PR, such codes have been replaced by calling a function which calls one of the following functions (upper one has more priority) so that a compiler can know the codes are actually unreachable and can be optimized away:

Along with the above change, FK_YAML_HAS_CXX_23 macro has been added to check if the active C++ standard is 23 or greater. See here for its usage. The library currently has no implementation specific to C++23 features but detection of std::unreachable().


Pull Request Checklist

Read the CONTRIBUTING.md file for detailed information.

  • Changes are described in the pull request or in a referenced issue.
  • The test suite compiles and runs without any error.
  • The code coverage on your branch is 100%.
  • The documentation is updated if you added/changed a feature.

Please don't

  • The C++11 support varies between different compilers and versions. Please note the list of supported compilers. Some compilers like GCC 4.7 (and earlier), Clang 3.3 (and earlier), or Microsoft Visual Studio 13.0 and earlier are known not to work due to missing or incomplete C++11 support. Please refrain from proposing changes that work around these compiler's limitations with #ifdefs or other means.
  • Please refrain from proposing changes that would break YAML specifications. If you propose a conformant extension of YAML to be supported by the library, please motivate this extension.
  • Please do not open pull requests that address multiple issues.

@fktn-k fktn-k added the improvement refactoring or optimization without public API changes label Nov 16, 2024
@fktn-k fktn-k added this to the Release v0.3.14 milestone Nov 16, 2024
@fktn-k fktn-k self-assigned this Nov 16, 2024
@fktn-k fktn-k changed the title Use std::unreachable() or compiler specific extensions for dead but necessary code Use std::unreachable() or similar compiler specific extensions for dead but necessary code Nov 16, 2024
Copy link

github-actions bot commented Nov 16, 2024

:octocat: Upload Coverage Event Notification

Coverage data has been uploaded for the commit 7f64c51c04c3e9674781432ec4ed72ea0ba65a31.
You can download the artifact which contains the same file uploaded to the Coveralls and its HTML version.

Name fkYAML_coverage.pr425.zip
ID 2196285415
URL https://github.com/fktn-k/fkYAML/actions/runs/11868627776/artifacts/2196285415

@fktn-k fktn-k force-pushed the use_unreachable_for_dead_code branch from 1c9bfc4 to 7f64c51 Compare November 16, 2024 08:23
@fktn-k fktn-k merged commit 248dcba into develop Nov 16, 2024
171 checks passed
@fktn-k fktn-k deleted the use_unreachable_for_dead_code branch November 16, 2024 08:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
improvement refactoring or optimization without public API changes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant