[cfe-commits] [patch] Qualifiers refactor
Douglas Gregor
dgregor at apple.com
Fri Sep 25 20:57:34 PDT 2009
On Sep 25, 2009, at 6:50 PM, Chris Lattner wrote:
> On Sep 24, 2009, at 8:58 AM, Douglas Gregor wrote:
> On Sep 23, 2009, at 2:04 AM, John McCall wrote:
>>> The attached patch refactors how qualifiers are represented in
>>> clang.
>>>
>>> Currently, QualType uses the bottom three bits of a type pointer to
>>> represent the const, volatile, and restrict qualifiers. Extended
>>> qualifiers are represented using an ExtQualType object, which is an
>>> ordinary node in the type hierarchy --- except that it isn't. Most
>>> common operations on types have to explicitly check for these
>>> special qualifier nodes and handle them differently.
>>
>> ... except that most common operations end up forgetting that
>> ExtQualType exists. One of the big benefits of this change is that
>> all
>> of the qualifiers are kept together, so it's easier to reason about
>> them as a whole. Plus, ExtQualType didn't fit well into the type
>> system; this does.
>
> I also really like this change. However, 4% is a really big
> slowdown. Where is the time going?
It looks like it's spread out; nothing specific floated upward in the
Shark trace. My (bleak) hypothesis is that we''re getting death-by-a-
thousand-cuts from QualType::getTypePtr(), which is ubiquitous and now
has a branch.
- Doug
More information about the cfe-commits
mailing list