https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121666
Bug ID: 121666 Summary: __builtin_expect_with_probability accepts non constant expression Product: gcc Version: 16.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: vincent at vvhe dot ca Target Milestone: --- In the documentation, it says that the probability must be a constant floating point expression, so why does gcc accept the following code? It this a bug or a feature that is not documented? double rand_impl(); void foo (int i){ __builtin_expect_with_probability (i, 0, rand_impl()); } Also, clang rejects the code from above for not being a constant expression: https://godbolt.org/z/Eh7x4q3xr.