Skip to content

Cannot compile using gcc 4.7 #3

Description

@oryxfea

Hi Jim,

When I compile the code, I got an error said

ptlsim/build/core/atom-core/atomcore.cpp:3250:40:   required from here
ptlsim/core/atom-core/atomcore.h:462:56: error: ‘invalidate’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
             return invalidate(tagof(virtaddr, threadid));
                                                        ^
ptlsim/core/atom-core/atomcore.h:462:56: note: declarations in dependent base ‘FullyAssociativeTagsNbitOneHot<32, 40, 0>’ are not found by unqualified lookup
ptlsim/core/atom-core/atomcore.h:462:56: note: use ‘this->invalidate’ instead
ptlsim/core/atom-core/atomcore.h: In instantiation of ‘int atom::TranslationLookasideBuffer<tlbid, size>::flush_virt(Waddr, W64) [with int tlbid = 1; int size = 32; Waddr = long long unsigned int; W64= long long unsigned int]’:
ptlsim/build/core/atom-core/atomcore.cpp:3251:40:   required from here
ptlsim/core/atom-core/atomcore.h:462:56: error: ‘invalidate’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
ptlsim/core/atom-core/atomcore.h:462:56: note: declarations in dependent base ‘FullyAssociativeTagsNbitOneHot<32, 40, 0>’ are not found by unqualified lookup
ptlsim/core/atom-core/atomcore.h:462:56: note: use ‘this->invalidate’ instead

Under gcc 4.7, it's illegal. I think it is because c++ template 's name look up rule. You may change it to this->invalidate.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions