https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110124

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The reason for the C++20 and C++17 difference is because std::tie creates a
std::tuple and for C++20 has a spaceship operator<=> (instead of operator<) and
that causes needing to another another function after the spaceship operator to
figure out `<`.

The IR for C++20:
              D.70406 = std::operator<=><const int&, const int&, const int&,
const int&, const int&, const int&> (&D.62773, &D.62783);
              D.70405 = std::operator< (D.70406, D.62981);

vs for C++17:
          D.56644 = std::operator< <const int&, const int&, const int&, const
int&, const int&, const int&> (&D.51943, &D.51953);

Reply via email to