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

--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Taking just this code:

template<typename _Arg1, typename _Arg2, typename _Result>
  struct binary_function
  {
    typedef _Arg1 first_argument_type;
    typedef _Arg2 second_argument_type;
    typedef _Result result_type;
  };

template<typename _Tp>
  struct less : public binary_function<_Tp, _Tp, bool>
  {
    constexpr
    bool
    operator()(const _Tp& __x, const _Tp& __y) const
    { return __x < __y; }
  };

int f(int i, int j)
{
  return less<int>()(i, j);
}

Compiling as C++14 and C++14 and comparing the -fdump-tree-original dumps I
see:

--- f.cc.003t.original.14       2019-02-15 10:43:10.841906030 +0000
+++ f.cc.003t.original.17       2019-02-15 10:43:15.442914718 +0000
@@ -10,5 +10,5 @@
 ;; enabled by -tree-original


-<<cleanup_point return <retval> = (int) less<int>::operator() (&TARGET_EXPR
<D.2458, {}>, (const int &) &i, (const int &) &j)>>;
+<<cleanup_point return <retval> = (int) less<int>::operator() (&TARGET_EXPR
<D.2229, {.D.2170={}}>, (const int &) &i, (const int &) &j)>>;


So the generated code is slightly different when using -std=c++17, would that
cause -Wodr to complain?

Reply via email to