https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118995
Bug ID: 118995
Summary: Missed optimization: [[assume]] works not as good as
std::unreachable()
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: eugene.shalygin at gmail dot com
Target Milestone: ---
Using [[assume(exp)]]; results in worse optimization than when the same
assumption is explained to the compiler via if (!expr) std::unreachable().
Don't know why implementations for these two differ, but there should be no
difference with respect to how they drop code branches?
Godbolt link with examples from #118933 and #109045:
https://godbolt.org/z/KT5zjsKo9