<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - std::bind(std::mem_fn(&ScalarEvolution::isKnownNonNegative), SE, _1) fails clang+mingw 5.1"
   href="https://llvm.org/bugs/show_bug.cgi?id=24735">24735</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>std::bind(std::mem_fn(&ScalarEvolution::isKnownNonNegative), SE, _1) fails clang+mingw 5.1
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>new-bugs
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Windows NT
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>new bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>yaron.keren@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>david.majnemer@gmail.com, llvm-bugs@lists.llvm.org, sanjoy@playingwithpointers.com
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Compiling lib/Analysis/ScalarEvolution.cpp with clang r246954 and libstdc++
from mingw gcc 5.1 on Windows fails as below. 
With the 4.9.3 libstdc++ build is OK.



In file included from ScalarEvolution.cpp:61:
In file included from c:/llvm-clean/include\llvm/Analysis/ScalarEvolution.h:24:
In file included from c:/llvm-clean/include\llvm/ADT/DenseSet.h:17:
In file included from c:/llvm-clean/include\llvm/ADT/DenseMap.h:17:
In file included from c:/llvm-clean/include\llvm/ADT/DenseMapInfo.h:17:
In file included from c:/llvm-clean/include\llvm/ADT/Hashing.h:49:
In file included from c:/llvm-clean/include\llvm/Support/Host.h:17:
In file included from c:/llvm-clean/include\llvm/ADT/StringMap.h:17:
In file included from c:/llvm-clean/include\llvm/ADT/StringRef.h:13:
In file included from C:\mingw32\i686-w64-mingw32\include\c++\algorithm:61:
In file included from
C:\mingw32\i686-w64-mingw32\include\c++\bits/stl_algobase.h:71:
C:\mingw32\i686-w64-mingw32\include\c++\bits/predefined_ops.h:296:17: error: no
matching function for call to object of type
      'std::_Bind<std::_Mem_fn<bool (llvm::ScalarEvolution::*)(const llvm::SCEV
*) __attribute__((thiscall))> (llvm::ScalarEvolution *,
      std::_Placeholder<1>)>'
        { return !bool(_M_pred(*__it)); }
                       ^~~~~~~
C:\mingw32\i686-w64-mingw32\include\c++\bits/stl_algo.h:120:8: note: in
instantiation of function template specialization
      '__gnu_cxx::__ops::_Iter_negate<std::_Bind<std::_Mem_fn<bool
(llvm::ScalarEvolution::*)(const llvm::SCEV *)
      __attribute__((thiscall))> (llvm::ScalarEvolution *,
std::_Placeholder<1>)> >::operator()<const llvm::SCEV *const *>' requested
      here
          if (__pred(__first))
              ^
C:\mingw32\i686-w64-mingw32\include\c++\bits/stl_algo.h:171:19: note: in
instantiation of function template specialization
      'std::__find_if<const llvm::SCEV *const *,
__gnu_cxx::__ops::_Iter_negate<std::_Bind<std::_Mem_fn<bool
      (llvm::ScalarEvolution::*)(const llvm::SCEV *) __attribute__((thiscall))>
(llvm::ScalarEvolution *, std::_Placeholder<1>)> > >'
      requested here
      return std::__find_if(__first, __last,
                  ^
C:\mingw32\i686-w64-mingw32\include\c++\bits/stl_algo.h:566:19: note: in
instantiation of function template specialization
      'std::__find_if_not<const llvm::SCEV *const *,
__gnu_cxx::__ops::_Iter_pred<std::_Bind<std::_Mem_fn<bool
      (llvm::ScalarEvolution::*)(const llvm::SCEV *) __attribute__((thiscall))>
(llvm::ScalarEvolution *, std::_Placeholder<1>)> > >'
      requested here
      return std::__find_if_not(__first, __last,
                  ^
C:\mingw32\i686-w64-mingw32\include\c++\bits/stl_algo.h:509:29: note: in
instantiation of function template specialization
      'std::find_if_not<const llvm::SCEV *const *, std::_Bind<std::_Mem_fn<bool
(llvm::ScalarEvolution::*)(const llvm::SCEV *)
      __attribute__((thiscall))> (llvm::ScalarEvolution *,
std::_Placeholder<1>)> >' requested here
    { return __last == std::find_if_not(__first, __last, __pred); }
                            ^
ScalarEvolution.cpp:1951:12: note: in instantiation of function template
specialization 'std::all_of<const llvm::SCEV *const *,
      std::_Bind<std::_Mem_fn<bool (llvm::ScalarEvolution::*)(const llvm::SCEV
*) __attribute__((thiscall))> (llvm::ScalarEvolution *,
      std::_Placeholder<1>)> >' requested here
      std::all_of(Ops.begin(), Ops.end(), IsKnownNonNegative))
           ^
C:\mingw32\i686-w64-mingw32\include\c++\functional:1129:2: note: candidate
template ignored: substitution failure
      [with _Args = <const llvm::SCEV *const &>]: no matching function for call
to object of type 'std::_Mem_fn<bool
      (llvm::ScalarEvolution::*)(const llvm::SCEV *)
__attribute__((thiscall))>'
        operator()(_Args&&... __args)
        ^
C:\mingw32\i686-w64-mingw32\include\c++\functional:1143:2: note: candidate
template ignored: substitution failure
      [with _Args = <const llvm::SCEV *const &>]: no matching function for call
to object of type 'const std::_Mem_fn<bool
      (llvm::ScalarEvolution::*)(const llvm::SCEV *)
__attribute__((thiscall))>'
        operator()(_Args&&... __args) const
        ^
C:\mingw32\i686-w64-mingw32\include\c++\functional:1157:2: note: candidate
template ignored: substitution failure
      [with _Args = <const llvm::SCEV *const &>]: no matching function for call
to object of type 'volatile std::_Mem_fn<bool
      (llvm::ScalarEvolution::*)(const llvm::SCEV *)
__attribute__((thiscall))>'
        operator()(_Args&&... __args) volatile
        ^
C:\mingw32\i686-w64-mingw32\include\c++\functional:1171:2: note: candidate
template ignored: substitution failure
      [with _Args = <const llvm::SCEV *const &>]: no matching function for call
to object of type 'const volatile std::_Mem_fn<bool
      (llvm::ScalarEvolution::*)(const llvm::SCEV *)
__attribute__((thiscall))>'
        operator()(_Args&&... __args) const volatile
        ^
1 error generated.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>