https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86739
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- So somehow mem_alloc_description<vec_usage>::mem_map_t which then is hash_map <mem_location_hash, vec_usage *> ends up with this reference type. But I can't figure out how :/ It in the end uses pointer_hash which has value/compare type of T * again with T == mem_location. hash_entry of the hash-map should have Value == vec_usage *, so I'm confused as to where the reference appears. ISTR figuring the default hash_map<> template resolution is a bit tricky.