Skip to content

Conversation

@chenpeizhi
Copy link
Contributor

  • Fix find_last() to return SIZE_MAX instead of -1 for unsigned Size type

  • Add explicit casts for builtin function returns and fix sign-conversion warnings

  • Migrate from GCC builtins to C++20 standard library bit operations

…o C++20 standard (#1)

* Fix find_last() to return SIZE_MAX instead of -1 for unsigned Size type

* Add explicit casts for builtin function returns and fix sign-conversion warnings

* Migrate from GCC builtins to C++20 standard library bit operations

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: chenpeizhi <8114085+chenpeizhi@users.noreply.github.com>
Copilot AI review requested due to automatic review settings November 10, 2025 04:31
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR modernizes the fbitset library by replacing GCC-specific compiler intrinsics with portable C++20 standard library bit manipulation functions from the <bit> header.

Key Changes:

  • Replaced __builtin_clz, __builtin_ctz, and __builtin_popcount intrinsics with std::countl_zero, std::countr_zero, and std::popcount respectively
  • Changed find_last() return value from -1 to std::numeric_limits<Size>::max() for consistency with unsigned type semantics
  • Updated build requirements to C++20 and CMake 3.12

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
include/fbitset.hpp Replaced GCC intrinsics with C++20 <bit> header functions; updated find_last() return value and documentation
test/basic.cpp Added explicit Size() casts in initializer list; updated test assertion for new find_last() return value
README.md Updated documentation to reflect use of C++20 <bit> header instead of GCC intrinsics
CMakeLists.txt Updated minimum CMake version to 3.12, C++ standard to 20, and added CMAKE_CXX_STANDARD_REQUIRED

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@chenpeizhi chenpeizhi merged commit 765b2f7 into DrudgeCAS:master Nov 10, 2025
2 checks passed
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