https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105810
Bug ID: 105810 Summary: __glibcxx_assert can be improved greatly. Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: unlvsur at live dot com Target Milestone: --- Every function call has to carry the call which adds a burden. With -Os the function does not even get expanded. The operator[] becomes extremely expensive. https://godbolt.org/z/Gcchdrdxj The situation might get worse when compiling with -fPIC since load/store data from %rip register needs more instructions. It can be improved to something like this. Put all the file, line, and condition information into a separate function. Since the function is an inline function, the entire program only holds one copy of the debugging information. https://godbolt.org/z/xc8jnqh5r https://godbolt.org/z/85M1PE9Te vs https://godbolt.org/z/6fsGo41bj Unfortunately, GCC got ICE. I have submitted the bug report to fix that. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105809