[cfe-commits] [patch] Qualifiers refactor

Chris Lattner clattner at apple.com
Mon Sep 28 17:43:05 PDT 2009


On Sep 28, 2009, at 3:52 PM, John McCall wrote:

> John McCall wrote:
>> The idea about adding a non-trivial branch to the old version is a  
>> good
>> one;  I'll let you know when I have numbers.
>>
>
> I made a fresh checkout of LLVM/clang 82704 and ran the standard  
> benchmark
> twice (n=40), once after applying the following patch:

What if you only call Value.getPointer() once?

-Chris

>
>
> --- include/clang/AST/Type.h    (revision 82704)
> +++ include/clang/AST/Type.h    (working copy)
> @@ -109,7 +109,7 @@ public:
>
>   unsigned getCVRQualifiers() const { return Value.getInt(); }
>   void setCVRQualifiers(unsigned Quals) { Value.setInt(Quals); }
> -  Type *getTypePtr() const { return Value.getPointer(); }
> +  Type *getTypePtr() const { return Value.getPointer() == (Type *)  
> 0xd0
> ? 0 : Value.getPointer(); }
>
>   void *getAsOpaquePtr() const { return Value.getOpaqueValue(); }
>   static QualType getFromOpaquePtr(void *Ptr) {
>
>
> This is (very roughly) parallel to the change in getTypePtr() that the
> QualType
> refactor introduced;  it's probably slightly more work, but it  
> captures
> the general
> idea.
>
> No branch in getTypePtr() (pristine 82704):
> name      avg     min     med     max      SD    total
> user     0.2120  0.2117  0.2120  0.2126  0.0002  8.4810
> sys     0.0316  0.0306  0.0319  0.0308  0.0016  1.2658
> wall     0.2478  0.2464  0.2475  0.2482  0.0008  9.9118
>
> With branch in getTypePtr():
> user     0.2228  0.2226  0.2228  0.2231  0.0001  8.9120
> sys     0.0317  0.0311  0.0306  0.0300  0.0017  1.2690
> wall     0.2593  0.2593  0.2588  0.2586  0.0021 10.3739
>
> So the branch causes a 5% regression in average userland time.
>
> John.
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits




More information about the cfe-commits mailing list