http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47714
--- Comment #6 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-03-08 17:07:01 UTC --- More reduced testcase: typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); class CodeModule { public: virtual ~CodeModule() { } }; class CodeModules { virtual const CodeModule* GetModuleForAddress(u_int64_t address) const = 0; }; template<typename AddressType, typename EntryType> class RangeMap { public: RangeMap() ; bool RetrieveRange(const AddressType &address, EntryType *entry) const; }; class MinidumpObject { public: virtual ~MinidumpObject() { } }; class MinidumpModule : public MinidumpObject, public CodeModule { }; class MinidumpModuleList : public CodeModules { virtual const MinidumpModule* GetModuleForAddress(u_int64_t address) const; RangeMap<u_int64_t, unsigned int> *range_map_; }; const MinidumpModule* MinidumpModuleList::GetModuleForAddress(u_int64_t address) const { unsigned int module_index; range_map_->RetrieveRange(address, &module_index); }