There is no downside or cost of treating an Assume
at compile-time as an Assert
and it may even help to find bugs while compiling without ABORT_ON_FAILED_ASSUME
.
This is also required for https://github.com/bitcoin/bitcoin/pull/31093
There is no downside or cost of treating an Assume
at compile-time as an Assert
and it may even help to find bugs while compiling without ABORT_ON_FAILED_ASSUME
.
This is also required for https://github.com/bitcoin/bitcoin/pull/31093
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
For detailed information about the code coverage, see the test coverage report.
See the guideline for information on the review process.
Type | Reviewers |
---|---|
ACK | dergoegge, brunoerg, marcofleon |
If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.
Can be tested by adding a failing Assume
at compile-time and observing that it passes on master, but fails to compile with this commit:
0diff --git a/src/txorphanage.cpp b/src/txorphanage.cpp
1index ba4ba6c3b6..4f8815e179 100644
2--- a/src/txorphanage.cpp
3+++ b/src/txorphanage.cpp
4@@ -99,6 +99,7 @@ void TxOrphanage::EraseForPeer(NodeId peer)
5
6 void TxOrphanage::LimitOrphans(unsigned int max_orphans, FastRandomContext& rng)
7 {
8+constexpr int FOO{Assume(0)};
9 unsigned int nEvicted = 0;
10 auto nNow{Now<NodeSeconds>()};
11 if (m_next_sweep <= nNow) {
Master:
0src/txorphanage.cpp:102:15: warning: unused variable 'FOO' [-Wunused-variable]
1 102 | constexpr int FOO{Assume(0)};
2 | ^~~
31 warning generated.
This pull:
0src/txorphanage.cpp:102:15: error: constexpr variable 'FOO' must be initialized by a constant expression
1 102 | constexpr int FOO{Assume(0)};
2 | ^ ~~~~~~~~~~~
31 error generated.
🚧 At least one of the CI tasks failed. Debug: https://github.com/bitcoin/bitcoin/runs/32016288650
Try to run the tests locally, according to the documentation. However, a CI failure may still happen due to a number of reasons, for example:
Possibly due to a silent merge conflict (the changes in this pull request being incompatible with the current code in the target branch). If so, make sure to rebase on the latest commit of the target branch.
A sanitizer issue, which can only be found by compiling with the sanitizer and running the affected test.
An intermittent issue.
Leave a comment here, if you need help tracking down a confusing failure.
Guix Build:
07a44582701c541810939dcc31608f04f52fdde4d60281d3432c246df1df2b903 guix-build-fa69a5f4b76a/output/aarch64-linux-gnu/SHA256SUMS.part
1688a63d66f5d194f84403dd193a69db76a44c767abdcb2a1ad1ffb20a5e8ecbc guix-build-fa69a5f4b76a/output/aarch64-linux-gnu/bitcoin-fa69a5f4b76a-aarch64-linux-gnu-debug.tar.gz
25357d07cb97dd44e870c83863cb1bf5db963a32d25dd87add96474f48cb3d74d guix-build-fa69a5f4b76a/output/aarch64-linux-gnu/bitcoin-fa69a5f4b76a-aarch64-linux-gnu.tar.gz
341318dc317d5aeb245306c3017954bb736d8ad5eb99bd3d5f7820a1bba9a1b85 guix-build-fa69a5f4b76a/output/arm-linux-gnueabihf/SHA256SUMS.part
4ef68e0c188aea33a73599e0dd73997b5545ed5e10ee55914c869bea0f11c1bd5 guix-build-fa69a5f4b76a/output/arm-linux-gnueabihf/bitcoin-fa69a5f4b76a-arm-linux-gnueabihf-debug.tar.gz
55c1adbc0d5d25f9c4d92a12564e227cc055bb4bf1b795d1d3ef7cfbd5fe00596 guix-build-fa69a5f4b76a/output/arm-linux-gnueabihf/bitcoin-fa69a5f4b76a-arm-linux-gnueabihf.tar.gz
6e1181f1b6abd53d12449577b9f93fef3ff9d3020d4278d474422d946dc92ea83 guix-build-fa69a5f4b76a/output/arm64-apple-darwin/SHA256SUMS.part
77078fc7ae690aad5e465e299cfa64ab7590e210bc4318489f2e4bc6577a2fddb guix-build-fa69a5f4b76a/output/arm64-apple-darwin/bitcoin-fa69a5f4b76a-arm64-apple-darwin-unsigned.tar.gz
86862e21738651e7a71d88448223e189b5781e006efed2cc2f9441a3ae4b5ce47 guix-build-fa69a5f4b76a/output/arm64-apple-darwin/bitcoin-fa69a5f4b76a-arm64-apple-darwin-unsigned.zip
9f4c74904148dd838be8eddb6e24401f69799328bb644b35f0038b332bda5dc41 guix-build-fa69a5f4b76a/output/arm64-apple-darwin/bitcoin-fa69a5f4b76a-arm64-apple-darwin.tar.gz
10cdf253c991863f3d6ea42ee87bf7c3fb076c7911c6828356aeb839db3badecf6 guix-build-fa69a5f4b76a/output/dist-archive/bitcoin-fa69a5f4b76a.tar.gz
111334aa50d75b395e9ad7becc978fdb9ae7d0629250fb90e08467a340b21875f7 guix-build-fa69a5f4b76a/output/powerpc64-linux-gnu/SHA256SUMS.part
129b2d3d61e0ce6e548f41a8eb2b3e41e29b6a79bafa8262fcb0df512d666fba04 guix-build-fa69a5f4b76a/output/powerpc64-linux-gnu/bitcoin-fa69a5f4b76a-powerpc64-linux-gnu-debug.tar.gz
136bd64e745d1291c0f5df8a80f10160af8fbb062158211f53714e7e98d6b4b339 guix-build-fa69a5f4b76a/output/powerpc64-linux-gnu/bitcoin-fa69a5f4b76a-powerpc64-linux-gnu.tar.gz
14472ad6a262d0f54c4d179bc725a25b97799349ca6fa0c8b76a874bf929caa28b guix-build-fa69a5f4b76a/output/riscv64-linux-gnu/SHA256SUMS.part
15055f2ae19a2c45d7e04108428869c8b1d288738c58934a3dea0f73ff62a66a79 guix-build-fa69a5f4b76a/output/riscv64-linux-gnu/bitcoin-fa69a5f4b76a-riscv64-linux-gnu-debug.tar.gz
16679a1de292ba51a97e289debbb798db8e9ac1343f7524c02156a5c94ff4e21a1 guix-build-fa69a5f4b76a/output/riscv64-linux-gnu/bitcoin-fa69a5f4b76a-riscv64-linux-gnu.tar.gz
17cb49ae504cbf7d94065515776a5c2107b106aa5fdeae23eab7c470332e816628 guix-build-fa69a5f4b76a/output/x86_64-apple-darwin/SHA256SUMS.part
18e973965dc03ae0f52e898c199e32f8f7fe0d372c9c3fdbd8ca059d46fb0ce261 guix-build-fa69a5f4b76a/output/x86_64-apple-darwin/bitcoin-fa69a5f4b76a-x86_64-apple-darwin-unsigned.tar.gz
19c8349576edfc7dcc07a340b57fb388e320c65f15a22405ba5316e317eb92d604 guix-build-fa69a5f4b76a/output/x86_64-apple-darwin/bitcoin-fa69a5f4b76a-x86_64-apple-darwin-unsigned.zip
202f98dc6b9243e8336b8d290df6d0dd4bb4b44fba2b19b655714cdda134627f90 guix-build-fa69a5f4b76a/output/x86_64-apple-darwin/bitcoin-fa69a5f4b76a-x86_64-apple-darwin.tar.gz
21602178ad962d162fc464130f6db47732c43e5f4b1b2cd54b0cdf66565f3a08d4 guix-build-fa69a5f4b76a/output/x86_64-linux-gnu/SHA256SUMS.part
2255406fe0d3a7d346d89f1d77935ee42743f8e5fa1504b1f834656cd94d3c86d7 guix-build-fa69a5f4b76a/output/x86_64-linux-gnu/bitcoin-fa69a5f4b76a-x86_64-linux-gnu-debug.tar.gz
23d5e6bc5e69dff3502ccd03cd87dcb9dc7a081e455a33d4f02491ea5390641805 guix-build-fa69a5f4b76a/output/x86_64-linux-gnu/bitcoin-fa69a5f4b76a-x86_64-linux-gnu.tar.gz
2463ef52c3b126d20ba0ddb47b44faab48399b475ab7055ca32f4e789212459695 guix-build-fa69a5f4b76a/output/x86_64-w64-mingw32/SHA256SUMS.part
25bc566b080621728d3a832a00a56261080687bd21523a53fced06e9b8acee17d3 guix-build-fa69a5f4b76a/output/x86_64-w64-mingw32/bitcoin-fa69a5f4b76a-win64-debug.zip
2680ae4adb8a8698cf65ca49dc0156fabdc8cf15dbde021b918e5720b84709d066 guix-build-fa69a5f4b76a/output/x86_64-w64-mingw32/bitcoin-fa69a5f4b76a-win64-setup-unsigned.exe
2741225019a960f9bfe8f6dc6993b725e56e2c9bfc48c5c40851231e42484e883f guix-build-fa69a5f4b76a/output/x86_64-w64-mingw32/bitcoin-fa69a5f4b76a-win64-unsigned.tar.gz
288fcc575e8718566e12f5f2decd512060c033458dd7b641a6728e6fc2d2a03b36 guix-build-fa69a5f4b76a/output/x86_64-w64-mingw32/bitcoin-fa69a5f4b76a-win64.zip