[PATCH] D35043: [ADT] Enable reverse iteration for DenseMap

Grang, Mandeep Singh via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 6 22:33:20 PDT 2017


I have removed the is_pointer trait. I thought we wanted it to work 
exactly for all pointer and pointer-like types. That's the reason I had 
an is_pointer trait.

So now how do we define the behavior for reverse iteration? It is no 
longer tied to pointer types, right? As long as a type is complete it 
will reverse iterate.


On 8/6/2017 3:17 PM, David Blaikie wrote:
> I'd still prefer not to build another trait for this unless we have to 
> - is there a reason we'd want is_pointer to not be true for some types 
> that are PointerLike? (or conversely, for it to be true for some types 
> that aren't PointerLike)
>
> On Sun, Aug 6, 2017 at 11:52 AM Mandeep Singh Grang via Phabricator 
> <reviews at reviews.llvm.org <mailto:reviews at reviews.llvm.org>> wrote:
>
>     mgrang added inline comments.
>
>
>     ================
>     Comment at: include/llvm/Support/PointerLikeTypeTraits.h:35
>     +// Trait to check if T is pointer.
>     +template<typename T>
>     +struct is_pointer { static const bool value = false; };
>     ----------------
>     mgrang wrote:
>     > Just checking if T is a complete type is not enough due to the
>     presence of specialization for const T:
>     > template <typename T> class PointerLikeTypeTraits<const T>
>     >
>     > In this case, for a const int the type is complete but it's not
>     a pointer type. So to handle such cases I had to check for
>     is_pointer too.
>     We might as well not check for is_complete and just check for
>     is_pointer, and then add more specialization for is_pointer of
>     other ptr types (like shared, unique ptr, etc)?
>
>
>     Repository:
>       rL LLVM
>
>     https://reviews.llvm.org/D35043
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170806/356c55ec/attachment.html>


More information about the llvm-commits mailing list