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);
}