<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/83245>83245</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
`PHINode::incoming_values()` does not return a good C++ range...
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
natanelh-mobileye
</td>
</tr>
</table>
<pre>
```
auto incoming = map_range(PHI->incoming_values(), [](Use *X) {return X;});
```
gives the following error, under gcc 7.5 :
```
In file included from {...snip...}
llvm-project/llvm/include/llvm/ADT/STLExtras.h: In instantiation of ‘auto llvm::map_range(ContainerTy&&, FuncTy) [with ContainerTy = llvm::iterator_range<llvm::Use*>; FuncTy = isInnermostAccPhi(llvm::Value*)::<lambda(llvm::Use*)>]’:
llvm-project/llvm/tools/my_pass.cpp:282:77: required from here
llvm-project/llvm/include/llvm/ADT/STLExtras.h:378:33: error: no matching function for call to ‘map_iterator(llvm::Use*, isInnermostAccPhi(llvm::Value*)::<lambda(llvm::Use*)>&)’
return make_range(map_iterator(std::begin(C), F),
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
```
Expected behavior:
1. I get range from `->incoming_values()`
2. I use it like normal with whatever function takes an llvm range
Actual behavior:
1. I get a "wannabe range that doesnt work properly"
2. can't use it in any way as a range...
The [docs](https://llvm.org/doxygen/classllvm_1_1PHINode.html#a1f0ff79b64a40d383b891f1baba89c6b) say that it should return a range...
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0VU2P2zYQ_TX0ZRBBIv0hHXyQvTZioCgCdFPkthhRI4ldinRJah1f8tsLynK02W5yKUoQMmRyZt68NzNC71VriLZstWOrhwUOobNuazCgId196G2lNF1pUdn6umXrdNrpA0tLAAAcggVlpO2VaYGJB-jx_OTQtMR4_unj6QMTh_v50wvqgTzjOeMF43u4RWU8_-wJGC-_MF4A2-wchcEZ-MLEjm0e4mWxu8V8A6FVL-QhdASN1dpeIghyzrrofTA1OWilhE2yAiZKeNfHyUCjNMUs9FBTDY2zfUSRJIk36pwkSQQx3tX6pf9wdvYvkoHxY3xl_DhZzn-UD4-MH_94_O3wNTj0SReDnwwo4wOaoDAoa8A2wA6c5Skr8pHH0VqUTJSvSdxbE1AZco9Xxtfj3sNxMDK-F5HDiwodvLo26jA7U4EcBusmj2I_H332xHjJxIGJ3eRzNFb-ZAy53vpQSvmpU4zns9WfUcZoF4Upx73X2Fc1_nBtch4vHaLMU66jzS_YDNZqz_ixvz6d0ftEns9MlDznTJSbTWQSwNHfg3J3rTpy9J_1EZs8PkUMcCshUYKx0GOQXayrZjBy1K2xDiRqDcHOAkbF7kS_y8L-fyA11kIx83rvyql9enym71X0Bp8P9c1fRa0yscqmljzefucO_9f69mqx1eHb2_Vukx2-nkkGqqGiDl_Ujd3bUZbACVoKMEKdum-d_nxw3H3yaDh4AhVAq2cCY12PGsZ2uHQY6IXcLFvAZ_KAZuyMW7AJ6vgsZRhQ_wofAuP8gsZgRRPY0GGA2pI3AS7WPcPZ2TM5fWWcfwcp0TC-CXeoygCaK1zwCugBb57ikHkF5rGj2Ni1lf42ILsQzj4qxo9TGSfWtYwfa_v12pJh_Cg1eh9PnrKn7NPH0--2pqQLvWZcYNakTbMpqvUSl2ktclHlRdZkFVaYF3JdxUni8XpLSAXwnR10fa-kGeSi3oq6EAUuaJtt0iLL1hkXi24rq7rKNmtJy2aJK46C141c11w2IherDS7Ulqd8mXKeZynPlyIpmhVRUa2ydZ1V1bpiy5R6VDq5Z7dQ3g-0zQVfrhYaK9L-_p1y27HTq6H1bJlq5YOfzYIKmuLHaiJhmoI_qaVRPjA2zMm21tawZ3zH-G7OfHB6-6MMrQrdUCXS9vNoeTOBxhTiNBuz-CcAAP__tidILg">