boostorg / system

Boost.org system module
http://boost.org/libs/system
36 stars 85 forks source link

operator==( error_code, error_code ) is suboptimal #106

Open pdimov opened 1 year ago

pdimov commented 1 year ago

There's room for improvement both when the RHS is unknown (https://godbolt.org/z/sK3G6j3e6) and when it's known (https://godbolt.org/z/6M9qd4dqa). (GCC does best here; Clang is even worse.)

Fixing this would probably require switching from interop_category to unknown_category (and retaining the original code value) as mentioned in #95. Also, the

        bool s1 = lhs.lc_flags_ == 1;
        bool s2 = rhs.lc_flags_ == 1;

logic should probably be changed to an explicit if tree.

pdimov commented 1 year ago

https://godbolt.org/z/1ob4zqvE7