Bug 18805 - [meta-bug] C++ member lookup
Summary: [meta-bug] C++ member lookup
Status: NEW
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 4.0.0
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: meta-bug
Depends on:
Blocks: c++-lookup, c++-name-lookup 17154
  Show dependency treegraph
 
Reported: 2004-12-03 10:17 UTC by Nathan Sidwell
Modified: 2022-01-06 22:23 UTC (History)
3 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2022-01-06 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nathan Sidwell 2004-12-03 10:17:22 UTC
The C++ FE holds class members in two vectors, a vector of overloaded methods
and a vector of fields and other stuff.  This is bad

1) These vectors are unsorted until the class is complete
2) When sorted they have O(log N) performance, and N can get resonably big these
days
3) You have to look in two places
4) It won't play nice when we get using declarations right -- you can't tell
at parse time whether a using declaration from a dependent base will be a
function/field/other

We should have one hash table per class to hold everything.
Comment 1 Andrew Pinski 2004-12-03 12:49:56 UTC
12944 is for generic namelookup problems.
Comment 2 Nathan Sidwell 2017-06-22 15:59:54 UTC
I guess I get to assign this to myself
Comment 3 Nathan Sidwell 2017-09-13 18:06:34 UTC
With r252078 I've done all I intend for the moment.  At least everythings on a single sorted vector.

Still to do is remove the IDENTIFIER_BINDING hackery that makes class members look like local stuff when inside the class.